1、二级 C 语言机试-274 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:将 NN 矩阵中元素的值按列向右移动 1 个位置,右边被移出矩阵的元素绕回左边第 1 列。例如,N=3,有下列矩阵:1 2 34 5 67 8 9计算结果为:3 1 26 4 59 7 8请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.h#define N 4void fun(intI*t)N1)int i,
2、j,x;/*found*/for(i=0;i (1) ;i+)/*found*/x=fi (2) ;for(j=N-1;j0;j-)tij=tij-1;/*found*/fi (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;iN;i+)for(j=0;jN;j+)printf(“%2d“,tij);printf(“/n“);fun(t);printf(“/nThe result is:/n“);for(i=0;iN;i+
3、)for(j=0;jN;j+)printf(“%2d“,tij);printf(“/n“);(分数:30.00)_二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:计算并输出下列级数的前 N 项和 SN,直到 SN+1的值大于 q 为止,q 的值通过形参传入。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:求 Fibonacci 数列中大于 t 的最小的数,结果由函数返回。Fibonacci 数列F(n)的定义为:F(0)=0,F=1F(n)=F(n-1)+F(n-2)例如,当 t=1000 时,函数值
4、为 1597。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。试题程序:#includeconio.h#includemath.h#includescdio.hint fun(int t)main()int n;n=1000;printf(“n=%d,f=%d/n“,n,fun(n);(分数:40.00)_二级 C 语言机试-274 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:将 NN 矩阵中元素的值按列向右移动 1 个
5、位置,右边被移出矩阵的元素绕回左边第 1 列。例如,N=3,有下列矩阵:1 2 34 5 67 8 9计算结果为:3 1 26 4 59 7 8请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includestdio.h#define N 4void fun(intI*t)N1)int i,j,x;/*found*/for(i=0;i (1) ;i+)/*found*/x=fi (2) ;for(j=N-1;j0;j-)tij=tij-1;/*found*/fi (3) =x;main()int tN=
6、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;iN;i+)for(j=0;jN;j+)printf(“%2d“,tij);printf(“/n“);fun(t);printf(“/nThe result is:/n“);for(i=0;iN;i+)for(j=0;jN;j+)printf(“%2d“,tij);printf(“/n“);(分数:30.00)_正确答案:(N (2)N-1 (3)0微考点本题关键字有:for 循环语句;矩阵元素的表示方法。)解析
7、:解析 填空 1:行循环通过第一个 for 循环实现,因此填入循环界限 N。填空 2:列下标为 N-1 的元素被移出矩阵,并存放在变量 x 中,因此填入 N-1。填空 3:被移出矩阵的元素要放入第一列,因此填入 0。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:计算并输出下列级数的前 N 项和 SN,直到 SN+1的值大于 q 为止,q 的值通过形参传入。(分数:30.00)_正确答案:(s=s+(double)(n+1)/n; (2)return;)解析:解析 本题关键字有:变量数据类型强制转换;return 语句。微分析(1)两个整数相除的结果也
8、是整数,因此要进行数据类型转换。(2)while 循环结束时变量 s 的值大于 q 的值,题目要求返回小于 q 的值,所以应该返回变量 t。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:求 Fibonacci 数列中大于 t 的最小的数,结果由函数返回。Fibonacci 数列F(n)的定义为:F(0)=0,F=1F(n)=F(n-1)+F(n-2)例如,当 t=1000 时,函数值为 1597。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。试题程序:#includeconio.h#
9、includemath.h#includescdio.hint fun(int t)main()int n;n=1000;printf(“n=%d,f=%d/n“,n,fun(n);(分数:40.00)_正确答案:(int fun(inf t)int f0=0,f1=1,f;do/*根据 Fibonacci 数列的定义求数值*/f=f0+f1;f0=f1;f1=f;while(ff)/*如果求的数值小于 t 则继续*/return f;)解析:解析 本题关键字有:变量数据类型及初始化;循环语句。微分析Fibonacci 数列每一项是前两个数列之和,f 代表第 n 项,f0 代表第 n-2 项,f1 代表第 n-1 项,退出循环时得到的数 f 即为所求。