1、国家二级 C语言机试(操作题)模拟试卷 369及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:计算出形参 s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。 例如,形参 s所指的字符串为: This is a C languageprogram,函数的返回值为6。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 int fun(char *s) 3 int n=0, flag=0
2、; 4 while(* s!= 0) 5 if(*s!= flag=0) 6 *found* 7 _1_; flag=1 ; 8 *found* 9 if(*s= )flag=_2_; 10 *found* 11 _3_; 12 13 return n; 14 15 main() 16 char str81; int n; 17 printf( nEnter a line text: n); gets(str); 18 n=fun(str); 19 printf( nThere are d words in this text n n, n); 20 二、程序修改题 2 给定程序 MODI1
3、C中 fun函数的功能是:求出以下分数序列的前 n项之和。和值通过函数值返回 main函数。 例如,若 n=5,则应输出: 8 391667。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 !1 #include stdio h 2 *found* 3 fun(int n)4 int a=2, b=1, c, k ;5 double s=0 0;6 for(k=1; k =n; k+)7 s=s+1 0 *a b; 8 *found* 9 c=a; a+=b; b+= c; 10 11 return(s); 12 main()13
4、 int n=5; 14 printf( nThe value of function is: 1f n, fun(n); 15 三、程序设计题 3 请编写一个函数,函数的功能是删除字符串中的所有空格。例如,主函数中输入asd afaa z67,则输出为 asdafaaz67。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中 的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 #include ctype h 3 void fun(char *str) 4 5 6 7 main() 8 9 char str8
5、1; void NONO (); 10 printf(Input a string: ); 11 gets(str); 12 puts(str); 13 fun(str); 14 printf(* str: s n, str); 15 NONO(); 16 17 void NONO() 18 19 *请在此函数内打开文件,输入调试数据,调用 fun函数,输出数据,关闭文件。 * 20 char str81; 21 int n=0; 22 FILE *rf, *wf; 23 rf= fopen(in dat, r); 24 wf=fopen(out dat, w); 25 while(n 10)
6、 26 fgets(str, 80, rf); 27 fun(str); 28 fprintf(wf, s, str); 29 n+; 30 31 fclose(rf); 32 fclose(wf); 33 国家二级 C语言机试(操作题)模拟试卷 369答案与解析 一、程序填空题 1 【正确答案】 (1)n+ (2)0 (3)s+ 【试题解析】 函数 fun的功能是计算出形参 s所指字符串中包含的单词个数。 第一空: “if(*s!= ”在 flag为 0的情况下, n才加 1,因此第二空处是将 flag置 0,即第二空处应为 “0”。 第三空: “while(*s!= 0)”循环的终止条件是
7、 s达到结尾,因此在循环体内 s应该不断往字符串尾移动,即第三空为 “s+”。 二、程序修改题 2 【正确答案】 (1)double fun(int n) (2)c=a; a+=b; b=c; 【试题解析】 (1)fun函数中的语句 “double s=0 0; ”以及 “return(s); ”说明 fun函数具有 double返回值,所以应将 “fun(int n)”改为 “double fun(int n)”。 (2)根据题干中给出的公式可以推出每一项的特点,知道每一项的 b值是前一项的C值,所以第二个标识下 “b+=c; ”改为 “b=c;”。 三、程序设计题 3 【正确答案】 1 char *p=str; 2 int i=0; 3 while(*p) 4 if(*p != )stri+=*p; 5 p+; 6 stri=0 ; 【试题解析】 该程序功能是删除字符串中的所有空格。本题的解题思路是首先利用一个指向字符串的指针,查找不是空格的字符,然后将不是空格的字符赋值到字符串,如果是空格,则跳过该字符,这样就实现了空格字符的删除。