1、国家二级 C语言机试(操作题)模拟试卷 113及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:计算形参 x所指数组中 N个数的平均值 (规定所有数均为正数 ),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至 x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 例如,有 10个正数: 46 30 32 40 6 17 45 15 48 26,平均值为: 30 500000 移动后的输出为: 30 6 17 15 26 46 32 40 45 48 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程
2、序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #define N 10 double fun(double *x) int i, j; double av, yN; av=0; *found* 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; print: f(“ nPlease enter a string: “); gets(s1); fun(s1, nu
3、m1); for(i=0; i #deine M 4 #define N 5 int fun(int aMN) main() int aaMN=1, 3, 5, 7, 9, 2, 9, 9, 9, 4, 6, 9, 9, 9, 8, 1, 3, 5, 7, 0; int i, j, y; void NONO(); printf (“The original data is: n“); for(i=0; iM; i+) for(j=0; jN; j+)printf (“ 6d“, aaij); printf(“ n“); y=fun(aa); printf(“ nThe sum: d n“, y
4、); printf(“ n“); NONO(); void NONO() * 请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * int i, j, y, k, aaMN ; FTTE *rf, *wf; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(k=0; k10; k+) for(i=0; iM; i+) for(j=0; jN; j+)fscanf(rf, “ d“, &aaij); y=fun(aa); fprintf(wf, “ d n“, y); fclose(rf); fclose(wf
5、); 国家二级 C语言机试(操作题)模拟试卷 113答案与解析 一、程序填空题 1 【正确答案】 (1)xi N (2)j+或 j=j+1 (3)i+或 i=i+1 【试题解析】 第一空: “for(i=0; iN; i+) av+=_1_; ”在该循环的下一个循环内是逐个比较元素 xi是否小于 av,即该循环的功能是求出平均值。由av=(x0+x1+xN -1) N=x0 N+x1 N+xN -1 N可知,第一空处应为“xi N”。 第二空: “if(xiav)yj=xi; xi=-1; _2_; ”如果 xi小于平均值则将 xi存储在 y数组中,变量 i是循环变量,变量 j记录数组 y的下
6、标变化,下一次执行 if内部语句时, y数组的下标应为下一个位置,故第二空处应为 j加 1,即第二空出为 “j+”或 “j=j+1”。 第三空: i为 while循环的循环变量,第一次进入 while的时候 i为 0,判断第一个元素 x0是否是 -1,第二次进入的时候判断第二个元素 x1是否是 -1,依此类推直到 i=N退出循环,故第 三处是变量 i自增,即第三空处为 “i+”或 “i=i+1”。 二、程序修改题 2 【正确答案】 (1)numk=0; (2)switch(*s) 【试题解析】 (1)第一个标识下的 for循环过程是将 hum数组中的变量初始值设置为 0,用来统计每一个元音字母
7、出现的个数, for循环中的循环条件表达式中的变量是 k,所以第二个标识下 “numi=0; ”改为 “numk=0; ”。 (2)第二个标识下的 switch-case条件选择的功能应该是对 s指针指向的字符串中的每一个字符进行判断,不 应该是 s的数组名,所以第三个标识下 “switch(s)”改为“switch(*s)”。 三、程序设计题 3 【正确答案】 int tot=0, i, j; for(i=0; iN; i+) tot+=a0i; tot+=aM一 1i; for(i=1; iM-1; i+) tot+=ai0; tot+=aiN-1; return tot; 【试题解析】 进入 fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分 别把行元素和列元素相加。但要避免把周边元素重复相加。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1