二级C语言机试模拟127 下载本文

内容发布更新时间 : 2024/9/20 1:06:23星期一 下面是文章的全部内容请认真阅读。

二级C语言机试模拟127

1、填空题

1、 请补充函数fun(),函数fun()的功能是求7的阶乘。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序:

#include<stdio.h> long fun(int n) {

if( 【1】 )

return(n*fun( 【2】 ); else if( 【3】 ) return 1; }

main() {

int k=7;

printf(\ }

2、改错题

1、 下列给定程序中,函数fun()的作用是,将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入\,cD\,则输出\cd\。

请改正函数fun()中的错误,使它能得出正确的结果。

注童:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include <stdio.h> #include <string.h> #include <conio.h> char *fun (char tt[]) {

int i;

for(i=0; tt[i]; i++)

/**************found**************/

{ if(('A' <=tt[i]||(tt[i]<='z' )) tt[i]+=32; } return(tt); }

main()

{int i;

char tt[81]; clrscr();

printf(\ gets(tt);

printf(\:\\n %s\ fun(tt)); }

3、编程题

1、 请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入abc4Efg,则应输出aBc4EFg。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:

#include <conio.h> #include <stdio.h> #include <string.h> void fun(char *ss) {

}

main() {

char tt[81]; clrscr();

printf(\ 80 characters:\\n\; gets(tt);

printf(\ \\%s\ fun(tt);

printf(\,tt); }

答案:

1、填空题

1、[1]n>1 [2]n-1 [3]n==1

[解析] 填空1:求阶乘时采用递归的算法,n>1和n==1这两种情况的处理方法不同,需要分开考虑。填空2:阶乘的算法是,当n>1时,n!=n*(n-1)!,即fun(n)=n*fun(n-1)。填空3:n==1是递归的终止条件,因为1!=1,所以当n=1时,返回1。 2、改错题

1、错误:if(('A' <=tt[i]||(tt[i]<='Z')) 正确:if((tt[i]>='A')&&(tt[i]<='Z'))

[解析] 从ASCII码表中可以看出,小写字母的ASCII码值比对应大写字母的ASCII码值大32。将字符串中的大写字母改为小写字母的方法是,从字符串第1个字符开始,根据ASCII码值判断该字母是不是大写字母,若是,则ASCII码值加32即可;重复执行以上过程直至字符串尾。本题可利用条件选择语句和循环语句来实现。 3、编程题

1、 void fun(char *ss) {

int i;

for(i=0;ss[i]!='\\0';i++) /*将ss所指字符串中所有下标为奇数位置的字母转换为大写*/

if(i%2==1&&ss[i]>='a' &&SS[i]<='z') ss[i]=ss[i]-32; }

[解析] 从C语言的学习中我们知道,只要将小写字母减去32则转成大写字母,将大写字母加上32则转成小写字母。该程序是用if语句实现该功能转化的。