1、国家二级 C语言机试(操作题)模拟试卷 533及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是: 调用随机函数产生 20个互不相同的整数放在形参 a所指数组中(此数组在主函数中已置 0)。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdliio .h #include stdio.h #define N 20 void fun ( int *a) int i, xf n=0; x =rand () 20; *found* whil
2、e (n 【 1】 ) 【 2】 ; *found* if (i = 【 3】 ) an=x; n+; ) x=rand() 20; main() int xN=0), i; fun(x); printf(“The result: n“); for(i=0; i N; i+) printf(“ 4 d“, xi); if(i+1) 5=0)printf(“ n“); printf(“ n n“); 二、程序修改题 2 下列给定程序中,函数 fun的功能是:先从键盘上输入一个 3行、 3列的矩阵的各个元素的值,然后输出主对角线元素之和。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程
3、序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include Stdio h VOid fun() int a33, sum; int i, j; *found* sum=1; for(i=0 ; i 3 ; i+) f for(j=0 ; j 3; j+) *found* scanf(“ d“, aij); j for(i: 0 ; i 3 ; i+) sum=sum+aii; printf(“Sum= d n“, sum); void msin() fun(); 三、程序设计题 3 编写程序,实现矩阵 (3行、 3列 )的转置
4、(即行列互换 )。 例如,若输入下面的矩阵: 100 200 300 400 500 600 700 800 900 则程序输出: 100 400 700 200 500 800 300 600 900 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #inCiude conio h #include Stdlib h void fun (int array33) void msin() FILE * wf; int 1, j; int array33=1
5、00, 200, 300), 400, 500, 600), 700, 800, 900; system(“CLS“); for(i=0 ; i 3; i+) for(j=0; j 3; j+) printf(“ 7d“, arrayij); printf(“ n“); fun(array); printf(“Converted array: n“); for(i=0; i 3; i+) for(j=0; j 3; j+) printf(“ 7 d“, arrayi j); printf(“ n“); *found* wf=fopen(“out dat“, “w“); for(i=0; i 3
6、; i+) for(j=0; j 3; j+) fprintf(wf, “ 7 d“, arrayij); fprintf(wf, “ n“); fclose(wf); *found* 国家二级 C语言机试(操作题)模拟试卷 533答案与解析 一、程序填空题 1 【正确答案】 (1)N或 20 (2)break (3)n 【试题解析】 填空 1:变量 n用于存储数组的下标,要通过 while语句对数组进行赋值,数组的容量为 20,因此循环条件应为 n 20。 填空 2:通过一个 for循环判断 x是否与数组中已存的元素重复,若重复则跳出for循环结束。 填空 3:若 for循环是由 break
7、语句结束的,则 x与数组中的元素重复,此时 i必然小于 n;若 for循环是因为循环变量 i递增到某值,而不再满足循环条件结束的,说明 x的值与数组中的元素不重复,则 此时 i的值等于 n。 二、程序修改题 2 【正确答案】 (1) sum =0; (2) scanf(“ d“, aij); 【试题解析】 该题考查对循环语句的掌握和对数组概念的理解。本题的解题思路为:先从键盘输入一个 33矩阵,然后循环累加,执行循环语句中的sum=sum+ai i;。因为变量 sum用来存放累加后的结果,所以应对其初始化为0。第二处错误考查标准输入函数 scanf的格式,被赋值的变量前要加上取地址符“&“。 三、程序设计题 3 【正确答案】 void fun (int array33l) int i, j, t; for(i=0; i 3; i+) *将右上三角和左下三角对换,实现行列互换 * for(j=i+l; j 3; j+) t=arrayij; arrayij=arrayji; arrayji=t; 【试题解析】 要实现矩阵转置,即将右上角数组元素和左下角数组元素对换,本题通过数组元素交换方法,完成矩阵转置操作。 因为对矩阵转置后仍然存回其本身,所以只能循环矩阵中的一个角(本程序是右上半三角)。控制右 上半三角的方法是在内层循环中循环变量 j从 i+1或 i开始。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1