1、二级 C语言-39 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是:返回字符数组中指定子符的个数,指定字符从键盘输入。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include stdio.h #define N 80 int fun (char s,char ch) int i=0, n=0; while(U U /U /U) if(U U /U /U) n+; i+; U U /U /U
2、; main ( ) int n; char strN, ch; clrscr (); printf (“/nInput a string: /n“); gets (str); printf (“/nInput a charactor: /n“ ; scanf (“%c“, n=fun (str, ch); printf(“/nnumber of %c:%d“, ch, n); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.给定程序 MODI1.C中函数 fun的功能是:计算并输出 high以内最大的 10个素数之和。high 的值由主函数传给 fun函
3、数。若 high的值为 100,则函数的值为 732。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 文件 MODI1.C内容如下: #includestdio.h #includemath.h int fun(int high) int sum=0,n=0,j,yes; /*found*/ while(high=2) high-; return sum; void mainU /U printf(“%d/n“,fun(100); (分数:30.00)填空项 1:_三、B编程题/B(总题数:1,分数:40.00)3.编写函数
4、 void fun(char*tt,int PP),统计在 tt所指的字符串中“a”到“z”26 个小写字母各自出现的次数,并依次放在 PP所指的数组中。 例如,当输入字符串“abcdefgabcdeabc”后,程序的输出结果应该是: 3 3 3 2 2 1 1 0000000000000000000 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #includesfdio.h #includestring.h void fun(char*tt,int pp) main() char aa1000; in
5、t bb26,k; printf(“/nPlease enter a char string:“); scanf(“%s“,aa); funiaa,bb); for(k=0;k26;k+) printf(“%d“,bbk); printf(“/n“); (分数:40.00)_二级 C语言-39 答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是:返回字符数组中指定子符的个数,指定字符从键盘输入。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入
6、所编写的若干表达式或语句。 试题程序: #include stdio.h #define N 80 int fun (char s,char ch) int i=0, n=0; while(U U /U /U) if(U U /U /U) n+; i+; U U /U /U; main ( ) int n; char strN, ch; clrscr (); printf (“/nInput a string: /n“); gets (str); printf (“/nInput a charactor: /n“ ; scanf (“%c“, n=fun (str, ch); printf(“
7、/nnumber of %c:%d“, ch, n); (分数:30.00)填空项 1:_ (正确答案:1 si或者 si!= /0 2 si=ch 3 return n)解析:解析 填空 1:while 循环的条件是当前参加比较的字符不为/0,即还没有到字符串的最后一个字符。填空 2:如果当前字符等于指定字符,则统计个数的变量 n加 1。填空 3:函数要求返回字符数组中指定字符的个数,所以函数要返回 n。二、B改错题/B(总题数:1,分数:30.00)2.给定程序 MODI1.C中函数 fun的功能是:计算并输出 high以内最大的 10个素数之和。high 的值由主函数传给 fun函数。若
8、 high的值为 100,则函数的值为 732。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 文件 MODI1.C内容如下: #includestdio.h #includemath.h int fun(int high) int sum=0,n=0,j,yes; /*found*/ while(high=2) high-; return sum; void mainU /U printf(“%d/n“,fun(100); (分数:30.00)填空项 1:_ (正确答案:第 1处:将“while(high=2) int b
9、b26,k; printf(“/nPlease enter a char string:“); scanf(“%s“,aa); funiaa,bb); for(k=0;k26;k+) printf(“%d“,bbk); printf(“/n“); (分数:40.00)_正确答案:(void fun(char*tt,int pp) int i; for(i=0;i26;i+) /*初始化 pp数组备元素为0*/ ppi=0; /*遍历字符串,统计小写字母出现的个数*/ for(;*tt!=/0;tt+) /*如果字符为小写字母*/ if(*tt)=a )解析:解析 本题关键字有:for 循环语句;数组操作;if 语句条件表达式;字符串结束标识/0;指针操作。 微分析 先使用 for循环语句初始化 pp数组中各元素为 0,再通过循环判断语句判断 tt所指字符串中的字符是否为小写字母,若是则相对应的 pp数组元素值加 1。