1、国家二级( C语言)机试模拟试卷 234及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是计算下式 直到10-3,并把计算结果作为函数值返回。 例如:若形参 e的值为 le-3,函数的返回值为 0 551690。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 !#include double fun(double e) int i,k; double s, t, x; s=0; k=1; i=2; *found* x= 【 1】 4; *found
2、* while(x 【 2】 e) S=s+k*x; k=k*( 1); t=2*i; *found* x=【 3】 (t*t); i+; return s; main()double e=le-3; printf(“ nThe result is: f n“, fun(e); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:计算函数 (x, y, z)=(x+y) (x-y)+(z+y) (z-y)的值。其中 x和 y的值不等, z和 y的值不等。 例如,当 x的值为 9、 y的值为 11、 z的值为 15时,函数值为 -3 50。 请改正程序中的错误,使它能
3、得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include #include #include /*found*/ #define FU(m,n) (m/n) float fun(float a,float b,float c) float value; value=FU(a+b,a-b)+FU(c+b,c-b); /*found*/ Return (value); main() float x,y,z,sum; printf(“Input x y z: “); scanf(“%f%f%f“, printf(“x=%f,y=%f,z=%fn“,x,y
4、,z); if (x=y|y=z)printf(“Data error!n“);exit(0); sum=fun(x,y,z); printf(“The result is : %5.2fn“,sum); 三、程序设计题( 40分) 3 编写一个函数,从 num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。 (注意:主函数中用 *作为结束输入的标志。 ) 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include void fun(char(*a)81, i
5、nt num, char *max) main() char ss1081, *ps; void NONO(); int n, i=0; printf(“输入若干个字符串 “); gets(ssi); puts(ssi); while(!strcrnp(ssi, “*“)=0) i+; gets(ssi); puts(ssi); n=i; fun(ss, n, 【试题解析】 ( 1)函数 fun两次调用宏 FU来计算 “value=FU(a+b, a-b)+FU(c+b,c-b);”。检查宏的定义是否正确,可以用实参代入宏进行展开: (a+b/a-b),由此看到, FU(a+b,a-b)进行的
6、计算不是 (a+b)/(a-b),而是 (a+b/a-b),因为 “/”的优先级高于 “+”或 “-”,所以要使用括号限定计算优先顺序。所以将 “#define FU(m,n) (m/n)”改为 “#define FU(m,n) (m)/(n)”。 ( 2)第二个标识下返回语句的关键字有误。所以,第二个标识下 “Return (value);”应该改为 “return (value);”, C语言中没有 “Return”这个关键字。 三、程序设计题( 40分) 3 【正确答案】 int i, k=0, maxlen; *k为 a数组中最 长串所在元素的下标,初始为 0, maxlen为 其串长 * maxlen=strlen(ak); for(i=1; imaxlen)( maxlen=strlen(ai); k=i; *max=ak; 【试题解析】 (1)设置一个指针变量 maxlen,使它的初值为第一个字符串,再使其他字符串的长度与 maxlen的长度进行比较,若其他字符串的长度大于maxlen,则将其他字符串的首地址赋值给 max。 (2)最后返回长度最长的字符串的地址。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1