1、二级 C语言机试 1及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组 str中。例如:当 n=13572468时,str=-“86427531”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的横线上填入所编写的若干表达式或语句。 试题程序: #include stdio.h #include conio.h #define N 80 char strN; void fun(long int n) int
2、i=0; while(U 【1】 /U) stri=U 【2】 /U; n/=10; i+; U【3】 /U; main() long int n=13572468; clrscr(); printf(“* the origial data */n“); printf(“n=%ld“,n); fun(n); printf(“/n%s“,str); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun的功能是按以下递归公式求函数值。 (分数:30.00)填空项 1:_三、B编程题/B(总题数:1,分数:40.00)3.请编写函数 fu
3、n(),对长度为 7个字符的字符串,除首、尾字符外,将其余 5个字符按 ASCII码值升序排列。 例如:原来的字符串为 BdsihAd,则排序后输出为 BAdhisd。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio.h #include ctype.h #include conio.h int fun(char*s,int num) main() char s10; clrscr(); printf(“输入 7个字符的字符串:“); gets(s); fun(s,7);pr
4、intf(“/n%s“,s); (分数:40.00)_二级 C语言机试 1答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组 str中。例如:当 n=13572468时,str=-“86427531”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的横线上填入所编写的若干表达式或语句。 试题程序: #include stdio.h #include conio.h #define N 80 char strN;
5、 void fun(long int n) int i=0; while(U 【1】 /U) stri=U 【2】 /U; n/=10; i+; U【3】 /U; main() long int n=13572468; clrscr(); printf(“* the origial data */n“); printf(“n=%ld“,n); fun(n); printf(“/n%s“,str); (分数:30.00)填空项 1:_ (正确答案:【1】n0 【2】n%10+0 【3】stri=0)解析:解析填空 1:while 循环的执行条件是 n0,当 n等于 0时,说明已经将整数的各位数字
6、都转换为数字字符并存入字符串中了。填空 2:n 对 10求余,得到整数 n的个位数字,在加上字符乃,的 ASCII码,得到对应的数字字符,并存入字符串 str 中。填空 3:将整数转换为字符串并倒序存放入字符数组str中后,还要在 str最后加上字符串结束标记符/0。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun的功能是按以下递归公式求函数值。 (分数:30.00)填空项 1:_ (正确答案:(1)错误:fun(int n); 正确:fun(int n))解析:(2)错误:if(n=1) 正确:if(n=1) 解析错误 1:该行是函数的首部,不是一条语句,因此
7、不能以分号结束。错误 2:if 垢面应该紧跟一个条件判断表达式,若写成“if(n=1)”,则说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。三、B编程题/B(总题数:1,分数:40.00)3.请编写函数 fun(),对长度为 7个字符的字符串,除首、尾字符外,将其余 5个字符按 ASCII码值升序排列。 例如:原来的字符串为 BdsihAd,则排序后输出为 BAdhisd。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio.h #include ctype.h
8、 #include conio.h int fun(char*s,int num) main() char s10; clrscr(); printf(“输入 7个字符的字符串:“); gets(s); fun(s,7);printf(“/n%s“,s); (分数:40.00)_正确答案:()解析:int fun(char*s,int num) char t; int i,j; for(i=1;inum-2;i+) /*下标值从 1开始,用循环依次取得字符串中的字符*/ for(j=i+1;jnum-1;j+) /*将字符与其后的每个字符比较*/ if(sisj) /*如果后面字符的 ASCII码值小于该字符的 ASCII码值*/ t=si; /*则交换这两个字符* si=sj; sj=t; 解析本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从 1开始,用循环变量 i来依次取得数组中的元素,用数组中的元素 si和 sj进行比较,如果后一个元素的 ASCII码值小于前一个元素的 ASCII码值,则交换这两个数组元素的值。