1、国家二级 C语言机试(操作题)模拟试卷 416及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是: 计算形参 x所指数组中 N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至 x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 例如,有 10个正数: 46、 30、 32、 40、 6、 17、 45、 15、 48、 26,平均值为30 500000。 移动后的输出为: 46、 32、 40、 45、 48、 30、 6、 17、 15、 26。 请在程序的下画线处填入正确的内容并把下画线删除,
2、使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdlib h #include stdio h #define N 10 double fun (double * x) int i, j; double s, av, yN; s =0; for(i=0; i【 1】 ; for(i=j=0; iav) /*found*/ y【 2】 =xil ; for (i=0; i N; i+) /*found*/ if(xi!=【 3】 )yj+=xi; for(i=0; i N; i+)xi=yi; ret
3、urn av; main () int i; double xN; for(i=0; i N; i+) xi=rand() 50; printf ( “n“) ; printf(“ 4 of“, xi); printf (“nThe average is: fn“, fun(x); printf “nThe result:n“,fun (x) ; for(i=0; i N; i+) printf (“ 5 Of “,xi ) ; printf ( “n“) ; 二、程序修改题 2 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里 “单词 “是
4、指由空格隔开的字符串)。例如,若输入 “I ama student to takethe examination“,则应输出 “I Am A Student To TakeThe Examination“。 请改正程序中的错误,使程序能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 maln函数,不得 增行或删行,也不得更改程序的结构! 试题程序: #include stdlib h #include string h #include conio h #include ctype h #include stdio h #include string h /*found*
5、/ void upfst (char p) int k=0; for(; *P; P+) if(k) if(*P=) k=0; else if(*P!=) k =1; *p = toupper (*p) ; void main () char chrstr 81 ; system (“CLS“) ; printf ( “ nPleaSe enter an English text line: “) ; gets (chrstr) ; printf ( “ nBofore changing: n s “, chrstr) ; upfst (clhrstr) ; printf ( “ nAfter
6、 changing: n s n“, chrstr) ; 三、程序设计题 3 下列程序定义了 NN的二维数组,并在主函数中赋值。请编写函数 fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的 s。 例如,若 a数组中的值为: 0 1 2 7 9 1 9 7 4 5 2 3 8 3 1 4 5 6 8 2 5 9 1 4 1 则返回主程序后 s的值应为 3 375。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 rruun和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio h #include
7、conio h #include stdlib h #define N 5 double fun (int w N) void main () FILE *wf; int aNN = 0,1,2 f 7,9,1,9, 7 , 4 , 5,2 , 3 , 8 , 3 , 1 , 4 , 5 , 6 , 8 , 2 , 5,9, 1,4,1; int i, j; double s; system ( “CLS“) ; printf (“ * The array * n “) ; printf “n “) ; s = fun (a) ; printf (“ * THE RESULT * n “) ;
8、 printf(“The sum is : oo lfn “,s); /*/ wf = fopen (“out dat“, “w“) ; fprintf (wf, “ lf“,s) ; fclose (wf) ; /*/ 国家二级 C语言机试(操作题)模拟试卷 416答案与解析 一、程序填空题 1 【正确答案】 (1)s/N (2)j+ (3)一 1 【试题解析】 填空 1:由原程序可知, av代表的是平均值,而平均值的求法是所有数的总和除以数的个数,因而本空应该填写 s/N。 填空 2:y数组代表暂时存放 x数组, if(xi av)表达的是当 x数组中的数大于平均值时,应该把这些大于平均值
9、的数放在 y数组的前半部分,因而此空应该填yj+。 填空 3:此空表明当 xi不等于什么时, xi中的数要赋值给 y数组 ,由题意可知此空只能填写一 1。 二、程序修改题 2 【正确答案】 void upfst( char *p) 【试题解析】 主函数中 fun函数的调用方式说明函数 fun的参数应为指针类型。 三、程序设计题 3 【正确答案】 double fun (int w N) int i,j,k =0; double sum =0 0; for(i=0; i N; i+) for(j=0; j N; j+) if(i=0|i=N 一 1|j=0 | j =N 一 1) 1*只要下 标中有一个为 0 或 N 一 1,则它一定是周边元素 */ sum=sum+wi一 i; /* 将周边元素求和 */ k+; return sum/k; /*求周边元素的平均值 */ 【试题解析】 本题要求计算二维数组周边元素的平均值, for循环语句控制循环过程, if条件语句根据数组元素的下标判断该元素是否为二维数组的周边元素。 本题采用逐一判断的方式,周边元素的规律为下标中有一个是 0或 N一 1,所以只要下标中有一个为 0或 N 一 1,那么它一定是周边元素。计算周边元素个数的方式是当给 sum累加一个值时, k也加 1。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1