1、国家二级( C语言)机试模拟试卷 242及答案与解析 一、程序填空题( 30分) 1 函数 fun的功能是:从三个形参 a, b, c中找出中间的那个数,作为函数值返回。 例如,当 a=3, b=5, c=4时,中数为 4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include int fun(int a, int b, int c) int t; *found* t= (ab) ? (bc?b : (ac?C: 【 1】 ): (aC)? 【 2】: (bc)
2、? c: 【 3】 ); return t; main() int a1=3, a2=5, a3=4, r; r=fun(a1, a2, a3); printf (“ nThe middle number is: d n“, r); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:在字符串的最前端加入 n个 *号,形成新串,并且覆盖原串。 注意:字符串的长度最长允许为 79。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include #include void fun(c
3、har s, int n) char a80, *p; int i; *found* s=p; for(i=0; ib)?(bc?“表示 abc,根据题目要求,则中间值为 b,若只是满足第一个 “?“前面的条件,而 cb,则选择执行 “(ac?c:【 1】 )“,当 ac时取值 c,所以 ac)?“是对 a、 c的比较选择,第三空处的 “(bc)?c“根据 b、 c的判断,题目已经给出了 c,所以这里应该是 a。 第三空:第三空中对于 b、 c的判断选择缺少 b,所以这里填 “b“。 二、程序修改题( 30分) 2 【正确答案】 (1)p=s; (2)while(*p+); 【试题解析】 (1
4、)变量初始化应是将形参数组地址 s传给工作指针 p。因此,应将“s=p; “改为 “p=s; “。 (2)dowhile循环的目的是把 P指向的字符串内容拷贝到 a字符串的后面,但第二标识下 while语句没有使用分号技术,故第二标识下应改成 “while(*p+); “。 三、程序设计题( 40分) 3 【正确答案 】 double proc(int n) int i; double s=0 0, s1=0 0; for(i=1; i=n; i+) S1=S1+pow(i, 0 5);求每一项 S=S+S1;按公式求出 S return S; 【试题解析】 在本程序中,用 S1来表示题中每个小括号内的值,第 1项相当于有 1个 10 5,第 2项相当于第 1项的值加上 20 5,第 3项相当于第 2项的值加上 30 5, ,依此类推。函数 pow(x, y)的功能是求出 x的 y次方,程序中用 S来表示总和值,每循环一次加 1次 S1的值,即加 1项。