1、国家二级 C语言机试(操作题)模拟试卷 653及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:根据形参 i的值返回某个函数的值。当调用正确时,程序输出: x1=5 000000, x2=3 000000, x1*x1+x1*x2=40 000000。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stclio h double f1(double x) return x*x; ) do
2、uble f2(double x, double y) return x*y; *found* 【 1】 fun(int i, double x, double y) if(i=1) *found* return【 2】 (x); else *found* return【 3】 (x, y); main() double x1=5, x2=3, r; r=fun(1, x1, x2); r+=fun(2, x1, x2); printf(“ nx1= f, x2= f, x1*x1+x1*x2= f n n“, x1, x2, r); 二、程序修改题 2 使用 VC+2010打开考生文件夹下
3、modil中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:将 n个无序整数从小到大排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行 或删行,也不得更改程序的结构 ! 试题程序: #include conio h #include stdio h #include stdlib h fun(int n, int*a) int i, j, p, t; for(j=0; j n-1; j+) p=j; *found* for(i=j+1; i n-1; i+) if(ap ai) *found* t=i;
4、 if(p!=j) t=aj; aj=ap; ap=t; putarr(int n, int*z) int i; for(i=l; i =n; i+, z+) printf(“ 4d“, *z); if(!(i 10)printf(“ n“); printf(“ n“); void main() int aa20=9, 3, 0, 4, 1, 2, 5, 6, 8, 10, 7, n=11; system(“CLS“); printf(“ nBefore sorting dnumbers: n“, n); putarr(n, aa); fun(n, aa); printf(“ nAfter s
5、orting d numbers: n“, n); putarr(n, aa); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。此程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN),该函数的功能是:将数组左下半三角元素中的值全部置成 0。例如 a数组中的值为: 1 9 7 2 3 8 4 5 6 则返回主程序后 a数组中的值应为: 0 9 7 0 0 8 0 0 0 注意:部分源程序给出如下。 请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入你
6、编写的若干语句。 试题程序: #include conio h #include stdio h #include stdlib h #define N5 void fun(int aN) void main() int aNN, i, j; system(“CLS“); printf(“*The array* n“); for(i=0; i N; i+) *产生一个随机的 5*5矩阵 * for(j=0; j N; j+) aij=rand() 10; printf(“ 4d“, aij); printf(“ n“); fun(a); printf(“THE RESULT n“); for(
7、i=0; i N; i+) for(j=0; j N; j+) printf(“ 4dI“, aij); printf(“ n“); 国家二级 C语言机试 (操作题)模拟试卷 653答案与解析 一、程序填空题 1 【正确答案】 (1)double (2)f1 (3)f2 【试题解析】 填空 1:本空函数 fun的返回值,根据 return可知,不论返回的是f1还是 f2,它们的返回值均为 double型的,故此空应该填写 double。 填空 2:因为函数 fun的功能是根据形参 i的值返回某个函数的值,当 i等于 1时,应该返回的是 f1。 填空 3:如果不满足 if的话,应该返回的是 f2
8、。 二、程序修改题 2 【正确答案】 (1)for(i=i+1; i n; i+) (2)p=i; 【试题解析】 该程序是对 n个无序数实现从小到大的排序,先找出整数序列的最小项,置于指针第 1个元素的位置;再找出次小项,置于第 2个元素的位置;之后顺次处理后续元素。 (1)数组的长度为 n,所以最后一个元素的下标值为 n-1, i的取值范围应该包括此下标值。 (2)p是中间变量,存放值较小的元素下标。 三、程序设计题 3 【正确答案】 void fun(int aN) int i, j; for(i=0; i N; i+) for(j=0; j =i; j+) aij=0; *将数组左下半三角元素中的值全部置成 0* 【试题解析】 对于 NN二维数组,如何表示其左下半三角元素,可以通过以下语句实现。 for(i=0; i n; i+) for(j=0; j =i; j+) 外层循环用来控制矩阵的行下标,内层循环控制矩阵的列下标。注意列下标的取值范围,因为要表示下三角元素,所以 j的范围是 0 i。