1、二级 C 语言-297 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将形参 s 所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参 s 所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h #includestring.h #includectype.h int fun(char*
2、s) int sum=0; while(*s) /*found*/ if(isdigit(*s)sum+=*s- 1; /*found*/ 2; /*found*/ return 3; main() char s81;int n; printf(“/nEnter a string:/n/n“);gets(s); n=fun(s); printf(“/nThe result is: %d/n/n“,n); (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.给定程序中函数 fun 的功能是:计算小于形参 k 的最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主
3、函数传入,若 k 的值为 500,则函数值为 4622。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h int fun(int k) int m=0,mc=0; while(k=2)mc+; k-; return m; /*found*/ 1 main() printf(“%d/n“,fun(500); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,它的功能是:求小于形参 n 同时能被 3 与 7 整除的所有自然数之和的平方根,并作为函
4、数值返回。 例如,若 n 为 1000 时,程序输出应为:s=153.909064。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #includemath.h #includestdio.h double fun(int n) main()/*主函数*/ printf(“s=%f/n“,fun(1000); (分数:40.00)_二级 C 语言-297 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将形参 s 所指字符串中的数字字符
5、转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参 s 所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h #includestring.h #includectype.h int fun(char*s) int sum=0; while(*s) /*found*/ if(isdigit(*s)sum+=*s- 1; /*found*/ 2; /*found*/ return 3; main()
6、 char s81;int n; printf(“/nEnter a string:/n/n“);gets(s); n=fun(s); printf(“/nThe result is: %d/n/n“,n); (分数:30.00)解析:(1)48 (2)s+ (3)sum 解析 本题是把字符串中是数字字符转换成对应的数值并进行累加。 填空 1:“0“字符对应的 ASCII 码值是 48,因此数字字符转换成对应数值时只要减去 48,即是该数字字符对应的数值,所以应填 48。 填空 2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填 s+。 填空 3:返回累加和 sum,所以应填 sum
7、。二、程序改错题(总题数:1,分数:30.00)2.给定程序中函数 fun 的功能是:计算小于形参 k 的最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数值为 4622。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h int fun(int k) int m=0,mc=0; while(k=2)mc+; k-; return m; /*found*/ 1 main() printf(“%d/n“,fun(500); (
8、分数:30.00)解析:(1)if(k%13=0)|(k%17=0) (2) 解析 (1)C 语言中,x 能被 y 整除的表示方法是 x%y=0,而不是题目中所表示的 x%y=0。所以,if(k%13=0)|(k%17=0)修改后的结果应该是答案所示信息。 (2)程序中缺少程序完整所需的“,此类信息在做题时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来。比如丢失“的错误信息是“Compound statement missing in function fun“。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,它的功能是:求小于形参 n 同
9、时能被 3 与 7 整除的所有自然数之和的平方根,并作为函数值返回。 例如,若 n 为 1000 时,程序输出应为:s=153.909064。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #includemath.h #includestdio.h double fun(int n) main()/*主函数*/ printf(“s=%f/n“,fun(1000); (分数:40.00)_正确答案:()解析:double fun(int n) double sum=0.0; int i; for(i=21;i=n;i+) if(i%3=0) return sqrt(sum); 解析 本题考查算术运算的算法,首先利用一个 for 循环判断小于 n 且能同时被 3 和 7 整除的整数,并将满足条件的整数累加到 sum,之后调用 sqrt 函数计算 sum 的平方根,并作为函数的返回值。