1、国家二级 C语言机试(操作题)模拟试卷 400及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:把形参 s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动 (注:字符串的长度大于等于 2)。例如,形参 s所指的字符串为:abcdefgh,执行结果为: ahcbedgf。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删 行,也不得更改程序的结构 ! 1 #include stdio h 2 void fun(char
2、 *s) 3 int i, n, k; char c; 4 n=0, 5 for(i=0; si!= 0; i+)n+; 6 *found* 7 if(n 2=0)k=n_1_; 8 else k=n-2; 9 *found* 10 c=_2_; 11 for(i=k-2; i =1j i=i-2) si+2=si; 12 *found* 13 s1=_3_; 14 15 main() 16 char s80=abcdefgh; 17 printf( nThe original string is: s n, s); 18 fun(s); 19 printf( nThe result is:
3、s n, s); 20 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:计算并输出 high以内最大的 10个素数之和。 high的值由主函数传给 fun函数。 若 high的值为: 100,则函数的值为: 732。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include math h 3 int fun(int high) 4 int sum=0, n=0, j, yes; 5 *found* 6 while(high =2) break; 【试题解析
4、】 函数的功能是计算并输出 high以内最大的 10个素数之和。 (1)C语言中左右括弧必须成对出现,在第一个标识下 “while(high =2)&(n10)”中,显然缺少一个右括弧,应改为 “while(2 =high)&(n 10)”。 (2)在判断素数的循环过程中,只要被判断的数能被某数整除就不是素数,就会跳出判断循环,在 C语言中使用 break语句跳出循环 ,并且 C语言中的语句使用分号为结尾。所以 “break”应改为 “break; ”。 三、程序设计题 3 【正确答案】 1 int i, n=0;字符统计初始值设置为 0 2 for(i=0; i strlen(s); i+) 3 小于字符串长度进行字符循环判断 4 5 if(si =a &si =z & si+1= si+1= 0) 单词判断条件 6 n+; 单词统计计数器加 1 7 8 return n; 返 回统计值 【试题解析】 (1)首先,求得字符串的长度。 (2)只要小于字符串的长度,就对字符进行循环判断。 (3)根据题干要求,只要字符是小写字母,并且下一个紧靠的字符是空格或者尾符,那么单词统计计数器就加 1。