1、国家二级 C语言机试(操作题)模拟试卷 232及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:把形参 s所指字符串中最右边的 11个字符复制到形参 t所指字符数组中,形成一个新串。若 s所指字符串的长度小于 n,则将整个字符串复制到形参 t所指字符数组中。 例如,形参 s所指的字符串为: abedefgh, n的值为 5,程序执行后 t所指字符数组中的字符串应为: defgh。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。不得 增行或删行,也不得更改程序的结构 ! 试题程序: 1 #inciude st
2、dio h 2 #iticiude string h 3 #defime N 80 4 void fun(char*s, int n, char*t) 5 int len, i, j=0; 6 len=strlen(s); 7 *found* 8 if(n=len)strcpy(【 1】 ); 9 else 10 *found* 11 for(i=len-n; i【 2】 ; 13 *found* 14 tj=【 3】 ; 15 16 17 main() 18 char sN, tN; int n; 19 printf(Enter a string: ); 20 gets(s); 21 pri
3、ntf(Enter n: ); 22 scanf( d, n); 23 fun(s, n, t); 24 printf(The string t: ); 25 puts(t); 26 二、程序修改题 2 下列给定程序中,函数 fun的功能是:求 S的值。例如,当 k为 10时,函数的值应为1 533852。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODll C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 !试题程序: 1 #include stdlib h 2 #include conio h 3 #include stdio h4 #incl
4、ude math h 5 *found* 6 fun(int k)7 8 int n; float s, w, p, q; 9 n=1; 10 s=1 0; 11 while(n 三、程序设计题 3 请编写函数 fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。 注意:部分源程序在文件 PROG1 C中。 请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: 1 #include string h 2 #include stdi
5、o h 3 #define N 80 4 int fun(char*s) 5 6 7 8 void main() 9 10 FILE*wf; 11 char lineN; 12 int num=0; 13 printf(Enter a string: n); 14 gets(line); 15 num=fun(line); 16 printf(The number of word is: d n n, num); 17 *found* 18 wf=fopen(out dat, w); 19 fprintf(wf, d, fun(a big car); 20 fclose(wf); 21 *fo
6、und* 22 国家二级 C语言机试(操作题)模拟试卷 232答案与解析 一、程序填空题 1 【正确答案】 (1)t, s (2)si (3)0或 0 【试题解析】 填空 1:当给定的长度 n大于该字符串 s的长度,那么把该字符串直接拷贝到 t就可以了,所以应填 t, s。 填空 2:使用 for循环语句,把最右边 n个字符依次添加到 t中,所以应填 si。 填空 3:字符串操作结束,需要给 t加一个字符串结束符,所以应填 0或 0。 二、 程序修改题 2 【正确答案】 (1)double fun(int k) (2)return s; 【试题解析】 (1)此处为函数定义错误,根据返同值的类型
7、可知函数类型标识符应为 double。 (2)语法错误。 三、程序设计题 3 【正确答案】 1 int fun(char*s) 2 3 int i, j=0; 4 for(i=0; si!= 0; i+) 5 if(si=, & (si+1= isi+1= 0) *如果一个字母的下一个 字符为空格或者结束标记,则表示一个单词结束 * 6 j+; 7 return j; *返回单词个数 * 8 【试题解析】 要判断单词的个数,首先想到的是程序怎样识别出一个单词,如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束,因此程序使用 for循环语句遍历整个字符串,用 if条件语句判断当前字符是否表示一个单词的结束,如果当前字符表示一个单词结束,则存放单词个数的变量加 1,最后返回单词的个数。