1、国家二级( C语言)机试模拟试卷 198及答案与解析 一、程序填空题( 30分) 1 函数 fun的功能是:计算 直到 。若 x=2 5,函数值为: 12 182494。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行。也不得更改稗序的结构 !#include#includedouble fun(double x)double f,t; int n; /*found*/ f=1 0+ 【 1】; t=x; n=1; do n+; /*found*/ t*=x 【 2】;/*found*/ f+=【
2、3】; while(fabs(t)=le-6); return f; main() double x, y; x=2 5; y=fun(x); printf(“ nThe result is: n“); printf(“x=一 12 6t: y=一 12 6f n“, x, y); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:按顺序给 s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在W所指的数组中。若 s所指数组中元素的个数不是 5的倍数,多余部分忽略不计。 例如, s所指数组有 14个元素,则只对前 10个元
3、素进行处理,不对最后的 4个元素求平均值。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include #define SIZE 20 fun(double *s, double w) int k,i; double sum; for(k=2,i=0;i #include #define LEN 20 void fun(char a, char b, int n) main() if(*b*c) k=*b; *b=*c, *c=k; main() char str1LEN, sir2LEN; int n ; void NON
4、O(); printf(”Enter the string: n”); gets(str1); printf(”Enter the position of the string deleted: ”); scanf(” d”, if(i+1)%5= 0) 【试题解析】 ( 1)在第一标识下 “sun=0.0;”,根据题意,这是给 sum赋值,而sun没有定义编译时会提示错误,应改为 “sum=0.0;”。 ( 2)错误标识下的 if判断语句是依顺序取五个字符, if中的逻辑表达式语法有误,由于 1%5恒等于 1,所以 i+1%5也就等价于 i+1了,所以将 “if(i+1%5=0)”改为 “if(i+1)%5= 0)” ,此处主要注意的是运算符的优先级。 三、程序设计题( 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。