1、二级 C 语言机试-286 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是;删除字符数组中小于等于指定字符的字符,指定字符从键盘输入,结果仍保存例如,输入“abcdefghij”,指定字符为d,则结果输出“defghij”。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题程序:#include stdio. h#define N 80void fun (char s, char ch)int i=0, j=0;wh
2、ile (s i )if (s Iiich)【1】 ;else【2】 i+;【3】 main ()char str N, ch;clrscr ();printf(“/n Input a string:/n“);gets (str);printf(“/n* original string */n“);puts (str);printf(“/n Input a character:/n“);scanf (“%c“, fun(str, ch);printf(“/n* new string */n“);puts (str);(分数:30.00)填空项 1:_二、改错题(总题数:1,分数:30.00)2
3、.下列给定程序中 fun()函数的功能是:将 n 个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意;不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#include conio.h#include stdio.h#include stdlib.hfun(int n, int *a)int i,j,p,t;for (j=0;jn-1;j+)P=j;/*found*/for(i=j+l;in-1;i+)if (apai)/*found*/t=i;if (p!=j)t=aj;aj=ap;ap=t;putarr( iht n,int *z)int i;f
4、or (i=l;i=n;i+,z+)printf(“%4d“,*z);if (!(i%10) printf(“/n“);printf (“/n“);main ()int aa20=9,3,0,4,1,2,5,6,8,10,7,n=11;clrscr();printf(“/n/nBefore sorting %d numbers:/n“,n); putarr(n,aa);fun(n,aa);printf(“/nAfter sorting %d numbers:/n“,n);putarr(n,aa);(分数:30.00)_三、编程题(总题数:1,分数:40.00)3.请编写函数 fun(),它的功
5、能是:求出 ss 所指字符串中指定字符的个数,并返回此值。例如,若输入字符串 123412132,输入字符 1,则输出 3。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#includecoio.h#includestdio.h#define M 81int fun(char *ss,char c)main()char aM,ch;clrscr();printf(“/nPlease enter a string:“);gets(a);printf(“/nPlease enter a char:“);ch=
6、getchar();printf(“/nThe number of the char is:%d /n“,fun(a,ch);(分数:40.00)_二级 C 语言机试-286 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是;删除字符数组中小于等于指定字符的字符,指定字符从键盘输入,结果仍保存例如,输入“abcdefghij”,指定字符为d,则结果输出“defghij”。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。试题
7、程序:#include stdio. h#define N 80void fun (char s, char ch)int i=0, j=0;while (s i )if (s Iiich)【1】 ;else【2】 i+;【3】 main ()char str N, ch;clrscr ();printf(“/n Input a string:/n“);gets (str);printf(“/n* original string */n“);puts (str);printf(“/n Input a character:/n“);scanf (“%c“, fun(str, ch);printf
8、(“/n* new string */n“);puts (str);(分数:30.00)填空项 1:_ (正确答案:1i+ 2sj+=si 3sj=/0)解析:解析 填空 1:如果当前字符比指定字符小,则什么都不做,通过 i+访问下一个字符。填空 2,如果当前字符大于等于指定字符,则将它保存在字符数组 s 中。填空 3:通过保存比指定字符大或相等的字符,来实现删除比指定字符小的字符。处理结束后,在字符串 s 最后要加上结束标记符/0。二、改错题(总题数:1,分数:30.00)2.下列给定程序中 fun()函数的功能是:将 n 个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注
9、意;不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#include conio.h#include stdio.h#include stdlib.hfun(int n, int *a)int i,j,p,t;for (j=0;jn-1;j+)P=j;/*found*/for(i=j+l;in-1;i+)if (apai)/*found*/t=i;if (p!=j)t=aj;aj=ap;ap=t;putarr( iht n,int *z)int i;for (i=l;i=n;i+,z+)printf(“%4d“,*z);if (!(i%10) printf(“/n“)
10、;printf (“/n“);main ()int aa20=9,3,0,4,1,2,5,6,8,10,7,n=11;clrscr();printf(“/n/nBefore sorting %d numbers:/n“,n); putarr(n,aa);fun(n,aa);printf(“/nAfter sorting %d numbers:/n“,n);putarr(n,aa);(分数:30.00)_正确答案:(1)错误:for(i=j+1;in-1;i+) 正确:for(i=j+1;in;i+)(2)错误:t=i; 正确:p=i;)解析:解析 该程序是对 n 个数实现从小到大的排序,该题中
11、先是找小输入整数的最小项,置于指针第1 个元素的位置:再找出第 2 个元素至尾元素的最小项,置于第 2 个元素的位置;之后顺次处理后读元素。三、编程题(总题数:1,分数:40.00)3.请编写函数 fun(),它的功能是:求出 ss 所指字符串中指定字符的个数,并返回此值。例如,若输入字符串 123412132,输入字符 1,则输出 3。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#includecoio.h#includestdio.h#define M 81int fun(char *ss,char
12、 c)main()char aM,ch;clrscr();printf(“/nPlease enter a string:“);gets(a);printf(“/nPlease enter a char:“);ch=getchar();printf(“/nThe number of the char is:%d /n“,fun(a,ch);(分数:40.00)_正确答案:(int fun(char *ss,char c)int i=0;for (;*ss!=/0;ss+)if(*ss=c)i+; /*求出 ss 所指字符串中指定字符的个数*/return i;)解析:解析 从字符串 ss 中找出子字符串的方法是:从第 1 个字符开始,对字符串进行遍历:若 ss 串的当前字符等于 t 串的第 1 个字符,两字符串的指针自动加 1,继续比较下一个字符;若比较至字符串的结尾,则跳出循环;若“串的字符和 c 串的字符不对应相同,则继续对,s 串的下一个字符进行处理。本程序是采用逐一比较的方式找出出现的次数。循环的作用是在串中从左到右逐一走动,if()的作用是进行判断是否相同,若与 c 相同则表示又出现一次,
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1