1、国家二级 C语言机试(操作题)模拟试卷 628及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0 9,则将 0转换成 9, 1转换成 8, 2转换成7, , 9转换成 0;若是其他字符则保持不变;并将转换后的结果作为函数值返回。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分 源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h
2、 *found* 【 1】 fun(char ch) *found* if(ch =0&【 2】 ) *found* return9(ch-【 3】 ); return ch; main() char c1, c2; printf(“ nThe result: n“); c1=2; c2=fun(c1); printf(“c1= c c2= c n“, c1, c2); c1=8; c2=fun(c1); printf(“c1= c c2= c n“, c1, c2); c1=a; c2=fun(c1); printf(“c1= c c2= c n“, c1, c2); 二、程序修改题 2 使
3、用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:实现两个整数的交换。 例如,给 a和 b分别输入 60和 65,输出为: a=65 b=60。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdio h #include conio h #include stdlib h *found* void fun(int a, b) int t; *found* t=b; b=a; a=t; void m
4、ain() int a, b; system(“CLS“); printf(“Enter a, b: “); scanf(“ d d“, &a, &b); fun(&a, &b); printf(“a= d b= d n“, a, b); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,请编写函数 fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当 n=10, x=0 3时,函数值为 1 349859。注意:部分源程序在文件 PROG1 C中。请勿改动主函数main和其他函数中的任何
5、内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序: #include conio h #include stdio h #include math h #include stdlib h double fun(double x, int n)void main()FILE*wf; system(“CLS“);printf(“ f“, fun(0 3, 10); *found* wf=fopen(“out dat“,“w“); fprintf(wf, “ f“, fun(0 3, 10); fclose(wf); *found* 国家二级 C语言机试(操作题)模拟试卷 628答案与
6、解析 一、程序填空题 1 【正确答案】 (1)char (2)ch =9 (3)0 【试题解析】 填空 1:函数定义时,类型标识符指明了函数的类型,函数的类型实际上是函数返回值的类型,所以此处应该填入 chart。 填空 2:通过 if条件语句判断字符串中字符是否为数字字符,即大于等于字符0,同时小于等于字符 9。 填空 3: return语句完成函数返回操作,要实现字符转换,完整语句为:return9-(ch-0)。 二、程序修改题 2 【正确答案】 (1)void fun(int*a, int*b) (2)t=*b; *b=*a; *a=t; 【试题解析】 (1)本题考查指针变量作函数参数
7、。采用一般变量作参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中 fun的调用方式说明 fun函 数的参数应当为指针类型。 (2)此处错误比较明显,因为 a和 b都是指针变量,进行变量交换时不能直接引用,应加上 “*”号。 三、程序设计题 3 【正确答案】 double fun(double x, int n) int i; double s=1 0, s1=1 0; for(i=1; i =n; i+) s1=s1*i; *各项中的阶乘 * s=s+pow(x, i) s1; *按公式求出 * return s; 【试题解析】 程序定义了变量 s1和 s, s1表示每项的分母 (即各项的阶乘 ), s存放累加和。循环语句控制累加的次数,在循环体中进行阶乘和累加操作,累加的结果存入 s中。此处使用了求乘方函数 pow(x, i),其含义是求 x的 i次方的值。