1、国家二级( C语言)机试模拟试卷 313及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:计算 x所指数组中 N个数的平均值 (规定所有数均为正数 ),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。 例如,有 10个正数: 46 30 32 40 6 17 45 15 48 26,平均值为: 30 500000 主函数中输出: m=30 0 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源 程序存放在考生文件夹下的 BLANKI C中。 不得增行或删行,也不得更改程序的结构 ! #inclu
2、de #include #define N 10 double fun(double x, double*av) int i, j; double d, s; s=0; for(i=0, i void fun(char*s, int num5) int k, i=5; for(k=0; k=0) numi+; main() char s181; int numl5, i; printf (“ nPlease enter a string: “); gets(81); fun(s1, num1); for(i=0; i #include void fun(char*s, char t) main
3、() char s100, t100; void NONO(); printf(“ nPlease enter string s: “); scarlf(“ s“, s); fun(s, t); printf(“ nThe result is: s n“, t); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函 数,输出数据,关闭文件。 * char s100, t100; FTLE*rf, *wf ; int i ; rf=fopen(“in dat“, “r“), wf=fopen(“out dat“, “w“); for(i=0; i10; i+) fsc
4、anf(rf, “ s“, s); fun(s, t); fprintf(wf, “ s n“, t); fclose(rf); fclose(wf); 国家二级( C语言)机试模拟试卷 313答案与解析 一、程序填空题( 30分) 1 【正确答案】 (1)*av (2)i (3)xj或 (1)*av (2)xi (3)j 【试题解析】 第一空:由 “if(xi*ava&*av xi=d)“可知, *av:是数组元素的平均值,故第一空处应为 “*av“。 第二空: “d=*av xi; j=【 2】; “d是平均值和元素 xi的差值, j在这里保存这个最接近平均值的元素,因此 j可以保存 xi
5、的值或 xi的下标均可。 第三空:当 j保存的是 xi的下标时,返回值是 xj;如果 j保存的 xi,那么函数返回 j。 二、程序修 改题( 30分) 2 【正确答案】 (1)numk=0; (2)SWitch(*s) 【试题解析】 (1)第一个标识下的 for循环过程是将 num数组中的变量初始值设置为 0,用来统计每一个元音字母出现的个数, for循环中的循环条件表达式中的变量是 k,所以第二个标识下 “numi=0; “改为 “numk=0; “。 (2)第二个标识下的 switch case条件选择的功能应该是对 s指针指向的字符串中的每一个字符进行判断,不应该是 s的数组名,所以第三
6、个标识下 “switch(s)“改为 “switch(*s)“。 三、程序设计题( 40分) 3 【正确答案】 int i, j=0; for(i=1, istrlen(s), i+=2) if(i 2=0&si 2)tj+=si; tj=0; 【试题解析】 (1)判断一个字符串中的某一字符下标 i是否为奇数,可用 “i2!=0“来判断,也可以从下标 1开始,每次移动 2个位置;而判断字符的 ASC 码值是否为奇数,则可用 “si 2!=0“来判定。 (2)对串 s中各个字符串逐个进行考查,满足条件的字 符就顺序放在新串 t中,否则就不存放。 (3)所有字符处理完后,记得在新串 t的末尾加上结束符 “0“。