1、国家二级 C语言机试(操作题)模拟试卷 433及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是: 将形参 s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参 s所指的字符串为 abs5def126jkm8,程序执行后的输出结果为 22。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include string h #include ctype 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; pr2ntf(“nEnter a string: nn“); gets(s); n=fun(s); printf(“nThe result is: dnn“, n); 二、程序修改题 2 下列给定的程序中,函数 fun的功能是:计算并输出 k以内最大的 10个能被 13或 17整除的自然数之和。 k的值由主函数传人,若 k的值为 500,则
3、函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。 注意:部分 源程序在文件 MOD11 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include conio h #include atdlib h int fun(int k) int m=0, mc=0, j; while(k =2)&(mc 1 0) /*found*/ if(k 13=0)|(k 17=0) ra=m+k; mc+; ) k一一 j /*found*/ return m; void main() system(“CLS“); pr
4、intf(“ ctn“, fun(5 00); 三、程序设计题 3 编写函数 fun,它的功能是:求小于形参 n同时能被 3与 7整除的所有自然数之和的平方根,并作为函数值返回。 例如,若 n为 1000时,程序输出应为: s=153 909064。 注意:部分源程序在文件 PROG1 c中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include math h #include stdio h double fun(int n) main()/*主函数 */ void NONO(); printf (“s= fn“,fu
5、n(1000); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE*fp, *wf; int ifn; double s; fp=fopen(“in dat“,“r“); wf=fopen (“out dat“, “w“); for(i=0; i 10; i+) fscanf(fp,“ d“, &n); s= fun (n); fprintf (wf,“ fn“, s); fclose(fp); fclose (wf); 国家二级 C语言机试(操作题)模拟试卷 433答案与解析 一、程序填空题 1 【正确答案】 (1)48
6、或 0 (2)s+ (3)sum 【试题解析】 本题是把字符串中是数字字符转换成对应的数值并进行累加。 填空 1: 0字符对应的 ASCII码值是 48,因此数字字符转换成对应数值时只要减去 48,即是该数字字符对应的数值,所以应填 48或者 0。 填空 2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填 s+。 填空 3:返回累加和 sum,所以应填 sum。 二、程序修改题 2 【正确答案】 (2) retum m, 【试题解析】 (1)C语言中, x能被 y整除的表示方法 是 x y=0,而不是题目中所表示的 x y=0。所以, if ( (k 13 =0)|(k 17 =0)
7、修改后的结果应该是答案所示信息。 (2)程序中缺少程序完整所需的 “,此类信息在做题时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来。比如丢失 “的错误信息是 “Compound statementmissingin function fun“。 三、程序设计题 3 【正确答案】 double fun ( int n) double sum =0 0; int i; sum + =i; return sqrt (sum) ; 【试题解析】 本题考查算术运算的算法,首先利用一个 for循环判断小于 n且能同时被 3和 7整除的整数,并将满足条件的整数累加到 sum,之后调用 sqrt函数计算 sum的平方根,并作为函数的返回值。