1、二级 C 语言机试 92 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:从键盘输入若干字符放到一个字符数组中,当桉回车键时结束输入,最后输出这个字符数组中的所有字符。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h #includectype.h main() int i=0; char a 81; char *p=s; clrscr (); printf“ In
2、put a string /n“); for (i=0; i80; i+) s i =getchar ( ); if (s i=/n) U【1】/U; si=U 【2】/U printf(“ display the string /n“); while (*p) putchar (U【3】 /U); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在冲。高位仍在高位,低位仍在低位。例如,当 s 中的数为 87653142 时,t 中的数为 8642。 请改正程序
3、中的错误,使它能得出正确的结果。 注意:不要改动 main,数,不得增行或删行,也不得更改程序的结构。 试题程序: #include conio.h #include stdio.h void fun(long s,long *t) /*/ int d; long s1=l; *t=0; while(s0) d=s%10; /*/ if(d%2=0) *t=d*sl+*t; sl*=10 /*/ s/=10; main ( ) long s,t; clrscr(); printf(“/nPlease enter s: “); scanf (“%ld“, fun(s, printf(“The r
4、esult is :%ld/n“,t); (分数:30.00)填空项 1:_三、B编程题/B(总题数:1,分数:40.00)3.请编写函数 fun(),其功能是:将 s 所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在 t 所指数组中。 例如,当 s 所指字符串中的内容为 ABCDEFGHIJK,则在 t 所指数组中的内容应是BDFHJ。 注意:部分源程序给出如下。 请勿改动主函数 main 口其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #includeconio. h #includestdio .h #includestring.h v
5、oid fun(char *s,char t) main () char sl00 ,tl00; clrscr (); printf(“%nPlease enter string S: “); scanf(“%s “,s); fun(s,t); prlntf(“/nThe result is:%s/n “,t); (分数:40.00)_二级 C 语言机试 92 答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:从键盘输入若干字符放到一个字符数组中,当桉回车键时结束输入,最后输出这个字符数组中的所有字符
6、。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h #includectype.h main() int i=0; char a 81; char *p=s; clrscr (); printf“ Input a string /n“); for (i=0; i80; i+) s i =getchar ( ); if (s i=/n) U【1】/U; si=U 【2】/U printf(“ display the string /n“); while (*p)
7、putchar (U【3】 /U); (分数:30.00)填空项 1:_ (正确答案:1break 2/0 3*P+)解析:解析 填空 1:当输入的字符是回车符时,使用 break 语句跳出 for 循环,结束输入。填空 2:结束输入后,在字符串 s 最后要加上结束标记符,/0 。填空 3:最初指针 p 指向字符串 s 的首字符,通过 P 慢逐一指向后面的每个字符,调用 putchar()函数输出字符。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在冲。高位仍在高位,低位仍在低位。例如,当 s
8、 中的数为 87653142 时,t 中的数为 8642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main,数,不得增行或删行,也不得更改程序的结构。 试题程序: #include conio.h #include stdio.h void fun(long s,long *t) /*/ int d; long s1=l; *t=0; while(s0) d=s%10; /*/ if(d%2=0) *t=d*sl+*t; sl*=10 /*/ s/=10; main ( ) long s,t; clrscr(); printf(“/nPlease enter s: “);
9、 scanf (“%ld“, fun(s, printf(“The result is :%ld/n“,t); (分数:30.00)填空项 1:_ (正确答案:错误:int d; 正确 long d;)解析:(2)错误:if(d%2=0) 正确:if(d%2=0) (3)错误:s/=10; 正确:s/=10 解析 其实,不论取出偶数还是奇数,思路应该是一样的。我们在刚开始学习 C 语言的时候就学习过强制类型转换以及运算级别的问题,所以,这里的 int 就没有存在的理由。错误 2 中的问题是怎么表达一个偶数的问题,归根结底还是“=”和“=”的区别问题。三、B编程题/B(总题数:1,分数:40.0
10、0)3.请编写函数 fun(),其功能是:将 s 所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在 t 所指数组中。 例如,当 s 所指字符串中的内容为 ABCDEFGHIJK,则在 t 所指数组中的内容应是BDFHJ。 注意:部分源程序给出如下。 请勿改动主函数 main 口其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #includeconio. h #includestdio .h #includestring.h void fun(char *s,char t) main () char sl00 ,tl00; clrscr ();
11、printf(“%nPlease enter string S: “); scanf(“%s “,s); fun(s,t); prlntf(“/nThe result is:%s/n “,t); (分数:40.00)_正确答案:()解析:void fun(char *s,char t) int i, j=0,k=strlen(s); /*k 为字符串的长度*/ for (i=l; ik; i=i+2) /*将 s 所指字符串中下标为奇数的字符存入 t 所指字符串中*/ t j+=s ii; tj=/0; /*在字符申最后加上结束标志*/ 解析 本题使用了一种泳远是奇数的循环方法,即 for(i=1; ik;i=i+2),因为开始时的值为 1,当 i+2 循环时,此值永远是奇数。