1、国家二级 C语言机试(操作题)模拟试卷 643及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:将 a所指 43矩阵中第 k行的元素与第 0行元素交换。 例如,有下列矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 若 k为 2,程序执行结果为: 7 8 9 4 5 6 1 2 3 10 11 12 请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程
2、序的结构 ! 试题程序: #include stdio h #define N3 #define M4 *found* void fun(int(*a)N, int【 1】 ) int i, temp; *found* for(i=0; i 【 2】 ; i+) temp=a0i; *found* a0i=【 3】 ; aki=temp; main() int xMN=1, 2, 3, 4, 5, 6), 7, 8, 9, 10, 11, 12, i, j; printf(“The array before moving: n n“); for(i=0; i M; i+) for(j=0; j
3、 N; j+) printf(“ 3d“, xij); printf(“ n n“); fun(x, 2); printf(“The array after moving: n n“); for(i=0; i M; i+) for(j=0; j N; j+) printf(“ 3d“, xij); printf(“ n n“); 二、程序修改题 2 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:根据整型形参 n,计算如下公式的值。 例如,若n=10,则应输出 0 617977。请改正程序中的
4、错误,使它能得出正确的结果。注意:部分源程序 在文件 NODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 !试题程序: #include stdlib h #include conio h#include stdio h *found* int fun(int n)float A=1; int i; *found* for(i=2; i n; i+)A=1 0 (1+A); return A; void main()int n; system(“CLS“); printf(“ nPlease enter n: “); Scanf(“ d“,&n); printf(“
5、A d= lf n“, n, fun(n); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 C。在此程序中,编写程序,实现矩阵 (3行、 3列 )的转置 (即行列互换 )。 例如,若输入下面的矩阵: 100 200 300 400 500 600 700 800 900 则程序输出: 100 400 700 200 500 800 300 600 900 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #
6、include stdio h #include conio h #include stdlib h void fun(int array33) void main() FILE*wf; int i, j; int array33=100, 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=
7、0; i 3; i+) for(j=0; j 3; j+) printf(“ 7d“, arrayij); printf(“ n“); *found* wf=fopen(“out dat“, “w“); for(i=0; i 3; i+) for(j=0; j 3; j+) fprintf(wf, “ 7d“, arrayij); fprintf(wf, “ n“); fclose(wf); *found* 国家二级 C语言机试(操作题)模拟试卷 643答案与解析 一、程序填空题 1 【正确答案】 (1)k (2)N (3)aki 【试题解析】 填空 1:变量 k在函数体 fun中已经使用,但
8、在函数体中 没有定义,肯定是在函数的形参中定义的,所以应填 k。 填空 2:数组共 N列,所以应填 N。 填空 3:这部分语句实现的功能是变量值的交换,所以应填 aki。 二、程序修改题 2 【正确答案】 (1)float fun(intn) (2)for(i=2; i =n; i+) 【试题解析】 (1)根据函数的返回值可知,函数应定义为 float型。 (2)该题中函数 fun的作用是计算数列前 n项的和,而数列的组成方式是:第 n项的分母是 1加第 n-1项的值,分子为 1,如果循环累加按 for(i=2; i n; i+)执行,当输入 n=2时循环不会执行,程序将得不到想要的结果,因此
9、循环变量的取值范围应包括 2,循环的条件为 i =n。 三、程序设计题 3 【正确答案】 void fun(int array33) int i, j, t; for(i=0; i 3; i+) *将右上三角和左下三角对换,实现行列互换 * for(j=i+1; j 3; j+) t=arrayij; arrayij=arrayji; arrayji=t; 【试题解析】 要实现矩阵转置,即将右 上角数组元素和左下角数组元素对换,本题通过数组元素交换方法,完成矩阵转置操作。 因为对矩阵转置后仍然存回其本身,所以只能循环矩阵中的一个角 (本程序是右上半三角 )。控制右上半三角的方法是在内层循环中循环变量 j从 i+1或 i开始。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1