1、全国计算机二级 C语言上机试题 52+2015年及答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是:将 NN矩阵中元素的值按列右移 1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵 1 2 3 4 5 6 7 8 9 计算结果为 3 1 2 6 4 5 9 7 8 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #define N 4 void fun(int (*t)N) int i, j,
2、x; /*found*/ for(i=0; i=1; j-) tij=tij-1; /*found*/ ti_3_=x; main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(“The original array:/n“); for(i=0; i for(j=0; jprintf(“/n“); fun(t); printf(“/nThe result is:/n“); for(i=0; i for(j=0; jprintf(“/n“); (分数:10.00)_2.例如,若 q的值为: 50.0,
3、则函数值为: 49.394948。 请改正程序中的错误,使程序能输出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include double fun( double q ) int n; double s,t; n = 2; s = 2.0; while (s=q) t=s; /*found*/ s=s+(n+1)/n; n+; printf(“n=%d/n“,n); /*found*/ return s; main ( ) printf(“%f/n“, fun(50); (分数:10.00)_3.编写函数 fun,它的功能是:求 Fibo
4、nacci数列中大于 t的最小的一个数,结果由函数返回。其中Fibonacci数列 F(n)的定义为: F(0)0,F(1)1 F(n)F(n1)F(n2) 例如:当 t = 1000时,函数值为:1597。 注意: 部分源程序在文件 PROG1.C中。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include #include int fun( int t) main() /* 主函数 */ int n; n=1000; printf(“n = %d, f = %d/n“,n, fun(n); NONO(); (分数:10
5、.00)_全国计算机二级 C语言上机试题 52+2015年答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是:将 NN矩阵中元素的值按列右移 1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵 1 2 3 4 5 6 7 8 9 计算结果为 3 1 2 6 4 5 9 7 8 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #define N 4 void fun(int (*t)N) int i,
6、 j, x; /*found*/ for(i=0; i=1; j-) tij=tij-1; /*found*/ ti_3_=x; main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(“The original array:/n“); for(i=0; i for(j=0; jprintf(“/n“); fun(t); printf(“/nThe result is:/n“); for(i=0; i for(j=0; jprintf(“/n“); (分数:10.00)_正确答案:(第一处:函数 f
7、un是对 NN矩阵进行操作,for 循环的终止值为 N。 第二处:把最后一列的元素值赋值给临时变量 x保存用来交换,所以应填:N-1。 第三处:第 1列元素值使用 x替换,由于 C语言的下标是从 0开始的,所以应填:0。)解析:2.例如,若 q的值为: 50.0,则函数值为: 49.394948。 请改正程序中的错误,使程序能输出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include double fun( double q ) int n; double s,t; n = 2; s = 2.0; while (s=q) t=s; /*
8、found*/ s=s+(n+1)/n; n+; printf(“n=%d/n“,n); /*found*/ return s; main ( ) printf(“%f/n“, fun(50); (分数:10.00)_正确答案:(第一处:如果两个整数类型相除,结果仍为整数,所以必须转换其中一个数的类型,所以应改为:s+=(float)(n+1)/n;。 第二处:返回结果错误,应改为:return t;。)解析:3.编写函数 fun,它的功能是:求 Fibonacci数列中大于 t的最小的一个数,结果由函数返回。其中Fibonacci数列 F(n)的定义为: F(0)0,F(1)1 F(n)F(
9、n1)F(n2) 例如:当 t = 1000时,函数值为:1597。 注意: 部分源程序在文件 PROG1.C中。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include #include int fun( int t) main() /* 主函数 */ int n; n=1000; printf(“n = %d, f = %d/n“,n, fun(n); NONO(); (分数:10.00)_正确答案:(int fun( int t) int f0 = 0, f1 = 1, f ; do f = f0 + f1 ; f0 = f1 ; f1 = f ; while(f t) ; return f ; )解析: