1、国家二级 C语言机试(操作题)模拟试卷 257及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:在形参 ss所指字符串数组中,将所有串长超过 k的字符串中后面的字符删除,只保留前面的 k个字符。 ss所指字符串数组中共有 N个字符串,且串长小于 M。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdio h 2 #include string h 3 #define N 5 4 #define M 10 5 *found* 6 void f
2、un(char(*ss)【 1】 , int k) 7 int i=0 ; 8 *found* 9 while(i 【 2】 ) 10 *found* 11 ssik=【 3】 ; i+; 12 13 main() 14 char xNM=Create, Modi-fy, Sort, skip, Delete; 15 int i; 16 printf( nThe original string n n); 17 for(i=0;i N;i+)puts(xi); 18 printf( n); 19 fun(x, 4); 20 printf( nThe string after deleted:
3、n n); 21 for(i=0; i N; i+) 22 puts(xi); 23 printf( n); 24 二、程序修改题 2 下列给定程序中,函数 fun的功能是:从 n个学生的成绩中统计出低于平均分的学生人数,此人数作为函数值返回,平均分存放在形参 a-ver所指的存储单元中。 例如,输入 8名学生的成绩: 80 5、 60、 72、 90 5、 98、 51 5、 88、 64 则低于平均分的学生人数为 4(平均分为 75 5625)。 请改正程序中的 错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的
4、结构 ! 试题程序: 1 #include stcllib h 2 #include stdio h 3 #include conio h 4 #define N 20 5 int fun(float*s, int n, float*aver) 6 float ave, t=0 0; 7 int count=0, k, i; 8 for(k=0; kn ; k+) 9 *found* 10 t=sk; 11 ave=t n; 12 for(i=0; in; i+) 13 if(siave)count; +; 14 *found* 15 * aver= ave; 16 return count;
5、 17 18 void main() 19 float s30, aver; 20 int m, i; 21 system(CLS); 22 printf( nPlease enter m: ); 23 scarlf( d, m); 24 printf ( nPlease enter d mark: n, m); 25 for(i=0 ; im; i+) 26 scanf( f, s+i); 27 printf( nThe number of students: d n, fun(s, m, 28 printf(Ave= f n, aver); 29 三、程序设计题 3 编写函数 fun,它的
6、功能是:求小于形参 n同时能被 3与 7整除的所有自然数之和的平方根,并作为函数值返回。 例如,若 n为 1000时,程序输出应为: s=153 909064。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: 1 #include math h 2 #include stdio h 3 double fun(int n) 4 5 6 7 main() *主函数 * 8 void NONO(); 9 printf(s= f n, fun(1000); 10 NONO(); 11 12 voi
7、d NONO() 13 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 14 FILE*fp, *wf; 15 int i, n; 16 double s; 17 fp=fopen(in dat, r); 18 wf=fopen(out dat, w); 19 for(i=0 ; i10; i+) 20 fscanf(fp, d, i=n ; i+) 6 if(i 3=0) (i 7=0) 7 sum+=i; 8 return sqrt(sum); 9 【试题解析】 本题考查算术运算的算法,首先利用 一个 for循环判断小于 n且能同时被 3和 7整除的整数,并将满足条件的整数累加到 sum,之后调用 sqn函数计算 sum的平方根,并作为函数的返回值。