1、国家二级 C语言机试(操作题)模拟试卷 386及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:计算形参 x所指数组中 N个数的平均值 (规定所有数均为正数 ),作为函数值返回;并将大于平均值的数放在形参 y所指数组中,在主函数中输出。 例如,有 10个正数: 46 30 32 40 6 17 45 15 48 26,平均值为: 30 500000 主函数中输出: 46 32 40 45 48 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程 序存放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! 1 #incl
2、ude stdlib h 2 #include stdio h 3 #define N 10 4 double fun(double x, double *y) 5 int i, j; double av; 6 *found* 7 av=_1_; 8 *found* 9 for(i=0; i N; i+) av = av+ _2_; 10 for(i=j=0; i N; i+) 11 *found* 12 if(xi av)y_3_=xi; 13 yj=-1; 14 return av; 15 16 main() 17 int i; double xN, yN; 18 for(i=0; i N
3、; i+) xi=rand() 50; printf( 4 0f, xi); 19 printf( n); 20 printf( nThe average is: f n, fun(x, y); 21 for(i=0 ; yi =0; i+) printf( 5 1f, yi); 22 printf( n); 23 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:计算 S所指字符串中含有 t所指字符串的数目,并作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意 :不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #incl
4、ude stdio h 2 #include string h 3 #define N 80 4 int fun(char *s, char *t) 5 int n; 6 char *p, *r; 7 n=0; 8 while(*s) 9 p=s; 10 *found* 11 r=p; 12 while(*r) 13 if(*r=*p) r+; p+; 14 else break; 15 *found* 16 if(*r=0) 17 n+; 18 s+; 19 20 return 0; 21 22 main() 23 char aN, bN; int m; 24 printf( nPlease
5、 enter stringa: ); gets(a); 25 printf( nPlease enter substring b: ); gets(b); 26 m=fun(a, b); 27 printf( nThe result is : m= d n, m); 28 三、程序设计题 3 请编写函数 fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为: 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为 61。 注意:部分源程序 存在文件 PROG1 C文件中。 请勿改动主函数 mar
6、e和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 l #include stdio h 2 #define M 4 3 #define N 5 4 int fun(int aMN) 5 6 7 8 main() 9 Int aaMN=1, 3, 5, 7, 9, 2, 9, 9, 9, 4, 6, 9, 9, 9, 8, 1,3, 5, 7, 0; 10 int i, j, y; void NONO(); 11 printf(The original data is: n); 12 for(i=0; i M; i+) 13 for(j=0; j N; j+)print
7、f( 6d, aaij); 14 printf( n); 15 16 y=fun(aa); 17 printf( nThe sum: d n, y); 18 printf( n); 19 NONO( ); 20 21 void NONO( ) 22 *请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * 23 int i, j, y, k, aaMN; 24 FILE *rf, *wf; 25 rf=fopen(in dat, r); 26 wf=fopen(out dat, w); 27 for(k=0; k 10; k+) 28 for(i=0; i M; i+)
8、 29 for(j=0; j N; j+)fscanf(rf, d, 32 33 fclose(rf); 34 fclose(wf); 35 国家二级 C语言机试(操作题)模拟试卷 386答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)xi N (3)j+ 【试题解析】 函数 fun的功能是计算形参 x所指数组中 N个数的平均值,同时利用传址参数传回平均值。 第一空: “return av; ”可知变量 av保存了平均值,故第一空处 aV初始化应为0,即第一空处应填 “0”。第二空: “for(i=0; i N; i+) av=av+_2_; ”后面的循环就是比较比平均值大的元素
9、,因此这个循环结束后 av中的值就是平均值。由“av=(x0+x1+xN -1) N=x0 N+x1 N+xN -1 N”可知,第二空处应为 “xi N”。第三空: “if(xi av)y_3_=xi; ”是将 xi保存在 y所指的数组中, i是循环变量, j初始化为 0,故 y的计数变量为 j,故第三空处应为 “j+”。 二、程序修改题 2 【正确答案】 (1)r=t; (2)if(*r=0) 【试题解析】 函数的功能是计算字符串中含有某子串的数目。 (1)根据 “while(*r)if(*r=*p)r+; p+; ”可知该循环是比较 r和 p指向的字符串是否相等,本题的要求是计算字符串中含
10、有某子串的数目, p指向的源字符串s,所以 r应指向的是字符串 t,故第一标识下应改成 “r=t;”。 (2)根据题意第二标识下 “if(*r=0)”应该是判断 r是否指向字符串尾 ,在 C语言中,等于是用 “=”标识,因此第二标识下应改成 “if(*r=0)”。 三、程序设计题 3 【正确答案】 1 int tot=0, i, j; 2 for(i=0; i N; i+) 3 tot+=a0i; 4 tot+=aM-1i; 5 6 for(i=1; i M-1; i+) 7 tot+=ai0; 8 tot+=aiN-1; 9 10 return tot; 【试题解析】 进入 fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列元素相加。但要避免把周边元素重复相加。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1