1、国家二级( C语言)机试模拟试卷 310及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:计算下式前 n项的和作为函数值返回。 例如,当形参 n的值为 10时,函数返回:9 612558。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 !#include double fun(int n) int i; double s, t;*found* s= 【 1】;*found* for(i=1; i0): “); scanf(“ d“,&n); )p
2、rintf(“ nThe result is: f n“, fun(n); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:求整数 x的 y次方的低 3位值。例如,整数 5的 6次方为 15625,此值的低 3位值为 625。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #inclucle long fun(int x, int y, long*p) int i; long t=1; *found* for(i=1; i #include #define LEN 20 voi
3、d fun(char a, char b, int n) main() if(*b*c) k=*b; *b=*c, *c=k; main() char str1LEN, sir2LEN; int n ; void NONO(); printf(”Enter the string: n”); gets(str1); printf(”Enter the position of the string deleted: ”); scanf(” d”, &n); fun(str1, str2, n); printf(”The new string is: s n”, sir2); NONO(); voi
4、d NONO() *本函数用于打开文件,输入测试数据,调 用 fun函数,输出数据,关闭文件。 * char str1LEN, str2LEN; int i, n ; FILE*rf, *wf; rf=fopen(”in dat”, ”r”); wf=fopen(”out dat”, ”w”); for(i=0; i10; i+) fscanf(rf, ” s d”, str1, &n); fun(str1, str2, n); fprintf(wf, ” s n”, str2); fclose(rf); fclose(wf); 国家二级( C语言)机试模拟试卷 310答案与解析 一、程序填空
5、题( 30分) 1 【正确答案】 (1)0 (2)n (3)(t*t) 【试题解析】 第一空: “return s: “可知 s是返回值, s记录了累加和,“for(i=1; i=【 2】; i+)“循环从级数的第一项 1开始累加求和, 故 s的初始化值应为 0,因此第一空应为 “0“。 第二空:题干要求求级数的前 n项之和,包括第 n项,因此循环变量的范围是1 n(包括 n),故第二空处应为 “n“。 第三空: “s=s+(2 0*i 1)*(2 0*i+1)/【 3】; “此处是累加求和, “(2 0*i-1)*(2 0*i+1)【 3】 “是级数项,因此第三空处为 t的平方,故第三空处应
6、为“(t+t)“,注意圆括弧不能少。 二、程序修改题( 30分) 2 【正确答案】 (1)for(i=1; i=v; i+) (2)t=t 1000; 【试题解析】 (1)第一个标识下的 “for(i=l; iy; i+)“说明进行了 y-1次方,而不是 y次方, y是主函数中的,所以将 “for(i=1; iy; i+)“改为 “for(i=1; i=y;i+“。 (2)题目中要求截取前面求得结果的低三位,因此,第二个标识下 “t=t 1000; “应该改为 “t=t 1000; “。 三、程序设计题( 40分) 3 【正确答案】 int p, m=0; for(p=0; pLEN; p+) if(p!=n) 如果字符下标不满足题目要 求的标 志 n bm=ap; 原始串的字符赋值给新串 b m+; bm=0;新串末尾加上结束符 【试题解析】 进入 fun函数,根据前面的分析: 通过循环,对字符串 a中各字符逐个考查,若该字符串下标 p不等于输入的标志位 n,那么就顺序放到新串 b中,否则就不存放。 最后,对所有字符处理完后,要注意的就是在新字符串 b的末尾加上串结束符 0。