1、国家二级 C语言机试(操作题)模拟试卷 494及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:利用指针数组对形参 ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。 ss所指字符串数组中共有 N个字符串,且串长小于 M。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #define N 5 #define M 8 void fun(char (*ss)M) char *psN,*tp; int i,j
2、,k; for(i=0; i #include /*found*/ fun(int n) double sum, s0, s1, s2, s; int k; sum = 1.0; if (n = 2) sum = 0.0; s0 = 0.0; s1=0.0; s2 = 1.0; for (k = 4; k = n; k+) s = sO + si + s2; sum += sqrt(s); sO = si; si = s2; s2 = s; /*found* */ return sum main () int n; printf(“Input N=“); scanf(“%d“, printf(
3、“%fn“, fun(n); 三、程序设计题 3 编写函数 fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当 n=10, x=0 3时,函数值为 1 349859。 注意:部分源程序在文件 PROG1 C文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include linclude double fun(double x , int n)main () void NONO () ;printf(“%fn“,fun(0.3,10);NONO();void NONO () * 本函数用于打开文件,输入数据,调用函数,输出
4、数据,关闭文件。 * FILE *fp, *wf ; int i, n ; double s, x ; fp = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“); for(i = 0 ; i 10 ; i+) fscanf(fp, “%lf,%d“, s = fun (x, n) ; fprintf(wf, “%fn“, s); fclose (fp);fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 494答案与解析 一、程序填空题 1 【正确答案】 (1)i (2)psj (3)tp 【试题解析】 第一空:分析可知, fun函数采
5、用的选择排序,在第一空处是初始化 k。 “for(j=i+1; j N; j+)”循环是寻找长度最长的字符串,找到之后和 k字符串交换,因此 k从 0开始,随着 i变化,故第一空处应为 “i”。 第二空: “if(strlen(psk)strlen(【 2】 )k=j; ”新的字符串 psj如果比 psk的长度长,那么 k记录下新的最长的字符串的下标位置 j,故第二空处应为 “psj”。 第三空: “tp=psi; psi=psk; psk=【 3】; ”是字符串地址交换,显然第三空处应是临时变量 tp。 二、程序修改题 2 【正确答案】 (1)double fun(int n) (2)ret
6、urn sum; 【试题解析】 (1)第一个错误标识下 fun函数的定义根据题干要返回前 n项的平方根之和,函数具有返回值,所以 “fun(int n)”应改为 “double fun(int n)”,其中,double为双精度型变量。 (2)第二个标识符下返回平方根之和,根据 C语言语法每一 句 C语言后面应该以“; ”为结尾,所以 “return sum”改为 “returnsum; ”。 三、程序设计题 3 【正确答案】 double s=1 0, y=x; int i ; long k=1; for(i=1 ; i=n ; i+) k=k*i; s +=y k ; y *=x ; return s ; 【试题解析】 (1)根据题干中给出的数列,推出每一项分子是在前一项的基础上乘以 x,分母是每一项的阶乘,它可以在前一项的基础上乘以当前项的项数 ,即第n项是 n。 (2)在循环中求得每一项,然后对其进行累加求和。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1