1、二级 C 语言-68 及答案解析(总分:61.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:把字符串 str1 中的非空格字符拷贝到字符串 str2 中。 例如,若sffl=“glad to see you!”, 则 str2=“gladtoseeyou!”。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h #define N 80 main() static char strl N =“
2、glad to see you!“; char str2 IN; int i=0, j=0; clrscr (); printf(“/n* strl*/n “); puts (str1); while (str1 i ) if(UU /U/U) str2 J+ =strl i; UU /U/U; printf(“/n* str2 */n “); for (i=0; ij; i+) printf (“%c“, str2 i ); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中函数 fun 的功能是:统计 substr 所指的字符串在 str
3、所指的字符串中出现的次数。 例如,若字符串为 aaas 1kaaas,子字符串为 as,则应输出 2。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh int fun(char*str,char*substr) int i,j,k,num=0; /*found*/ for(i=0,stri,i+) for(j=i,k=0; substrk=strj; k+,j+) /*found*/ If(substrk+1=/0) num +; break; return num; main() c
4、har str80,substr80; printf(“Input a string:“); gets(str); printf(“Input a substring:“); gets(substr); printf(“%d/n“fun(str,substr); (分数:30.00)填空项 1:_三、B编程题/B(总题数:1,分数:1.00)3.编写函数 fun(),函数的功能是:根据以下公式计算 s,计算结果作为函数值返回;n 通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+n) 例如:若 n 的值为 11 时,函数的值为 1.833333。 注意:部分源程序给
5、出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include conio.h #include stdio.h #include string.h float fun(int n) main() int n; float s; clrscr(); printf(“/nPlease enter N: “); scanf(“%d“, s=fun(n); printf(“The result is:%f/n “ , s); (分数:1.00)_二级 C 语言-68 答案解析(总分:61.00,做题时间:90 分钟)一、B
6、填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:把字符串 str1 中的非空格字符拷贝到字符串 str2 中。 例如,若sffl=“glad to see you!”, 则 str2=“gladtoseeyou!”。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h #define N 80 main() static char strl N =“glad to see you!“; char str2 IN; int i=0
7、, j=0; clrscr (); printf(“/n* strl*/n “); puts (str1); while (str1 i ) if(UU /U/U) str2 J+ =strl i; UU /U/U; printf(“/n* str2 */n “); for (i=0; ij; i+) printf (“%c“, str2 i ); (分数:30.00)填空项 1:_ (正确答案:1 str1i!= 2i+)解析:解析 填空 1:如果当前字符不为空格,则将它保存在字符串 str2 中。填空 2:在 while 循环中,通过 1 忖取得字符串 str1 中当前字符的下一个字符,继
8、续判断是否为空格。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中函数 fun 的功能是:统计 substr 所指的字符串在 str 所指的字符串中出现的次数。 例如,若字符串为 aaas 1kaaas,子字符串为 as,则应输出 2。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh int fun(char*str,char*substr) int i,j,k,num=0; /*found*/ for(i=0,stri,i+) for(j=i,k=0; substr
9、k=strj; k+,j+) /*found*/ If(substrk+1=/0) num +; break; return num; main() char str80,substr80; printf(“Input a string:“); gets(str); printf(“Input a substring:“); gets(substr); printf(“%d/n“fun(str,substr); (分数:30.00)填空项 1:_ (正确答案:(1)错误:for(i=0,stri,i+) 正确:for(i=0;stri;i+) (2)错误:If(substrk+1=/0) 正确
10、:if(substrk+1=/0))解析:解析 for 循环语句形式应为:for(表达式 1;表达式 2;表达式 3),表达式之间是分号;C 语言标识符区分大小写,所以条件句关键词 if 应小写。三、B编程题/B(总题数:1,分数:1.00)3.编写函数 fun(),函数的功能是:根据以下公式计算 s,计算结果作为函数值返回;n 通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+n) 例如:若 n 的值为 11 时,函数的值为 1.833333。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若
11、干语句。 试题程序: #include conio.h #include stdio.h #include string.h float fun(int n) main() int n; float s; clrscr(); printf(“/nPlease enter N: “); scanf(“%d“, s=fun(n); printf(“The result is:%f/n “ , s); (分数:1.00)_正确答案:(float fun(int n) int i,s1=0; float s=0.0; for(i=1;i=n;i+) s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ return s; )解析:解析 本题中用 s1 来表示式中每一项的分母,而每一项的分母都是其前一项分母加项数。注意由于 s1 定义成一个整型,所以在 s=s+1.0/s1 中不能把 1.0 写成 1。