1、全国计算机等级考试二级 C 语言操作题 20+2016 年及答案解析(总分:30.00,做题时间:90 分钟)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 for(i=j=0; i if( xi /*found*/ yj=xi; xi=-1; _2_; i=0; while(i if( xi!= -1 ) yj+=xi; /*found*/ _3_; for(i=0; i return av; main() i
3、nt i; double xN; for(i=0; i4.0f “,xi); printf(“/n“); printf(“/nThe average is: %f/n“,fun(x); printf(“/nThe result :/n“,fun(x); for(i=0; i5.0f “,xi); printf(“/n“); (分数:10.00)_2.给定程序 MODI1.C 中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。 例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。 请改正程序中的错误,使它能得出正确
4、的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include fun ( char *s, int num5 ) int k, i=5; for ( k = 0; k /*found*/ numi=0; for (; *s; s+) i = -1; /*found*/ switch ( s ) case a: case A: i=0; break; case e: case E: i=1; break; case i: case I: i=2; break; case o: case O: i=3; break; case u: case U
5、: i=4; break; if (i = 0) numi+; main( ) char s181; int num15, i; printf( “/nPlease enter a string: “ ); gets( s1 ); fun ( s1, num1 ); for ( i=0; i = 0) numi+; main( ) char s181; int num15, i; printf( “/nPlease enter a string: “ ); gets( s1 ); fun ( s1, num1 ); for ( i=0; i 5; i+ ) printf (“%d “,num1
6、i); printf (“/n“); (分数:10.00)_正确答案:()解析:解题思路: 第一处:num 初始化错误,应为:numk=0;。 第二处:由于 s 是指针型变量,所以应改为:switch(*s)。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 文件中。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 给
7、定源程序: #include #define 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; clrscr(); printf ( “The original data is : /n“ ); for ( i=0; i for ( j =0; j printf (“/n“); y = fun ( aa ); printf( “/nThe sum: %d/n“ , y ); printf(“/n“); NONO( ); (分数:10.00)_正确答案:(int fun ( int aMN ) int tot = 0, i, j ; for(i = 0 ; i N ; i+) tot += a0i ; tot += aM-1i ; for(i = 1 ; i M - 1 ; i+) tot += ai0 ; tot += aiN-1 ; return tot ; )解析:解题思路: 本题是统计二维数组周边元素值之和,但要注意的是不要重复计算四个角上的元素值,结果作为函数值返回。