1、二级 C 语言分类模拟题 229 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:有 NN 矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组 r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。 例如,若 N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算结果为 7 4 1 8 5 2 9 6 3 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在 下的 BLANK1.C 中
2、。 不得增行或删行,也不得更改程序的结构! #include stdio.h #define N 4 void fun(int (*t) N) int j,rN; for(j=0;jN;j+) rj=t0j; for(j:0;jN;j+) /*found*/ t0N-j-1=tj_; for(j=0;jN;j+) tj0=tN-1j; /*found*/ for(j=N-1;j=0;_) tN-1N-1-j=tjN-1; for(j=N-1;j=0;j-) /*found*/ tjN-1=r_; main() int tN=21,12,13,24,25,16,47,38,29,11,32,54
3、,42,21,33,10,i,j; printf(“/nThe 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)_二、程序修改题(总题数:1,分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:计算 S=f(-n)+f(-n+1)+f(
4、0)+f(1)+f(2)+f(n)的值。 例如,当 n 为 5 时,函数值应为:10.407143。f(x)函数定义如下: (分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,它的功能是计算: (分数:40.00)_二级 C 语言分类模拟题 229 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:有 NN 矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组 r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元
5、素成为最后一列。 例如,若 N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算结果为 7 4 1 8 5 2 9 6 3 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在 下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! #include stdio.h #define N 4 void fun(int (*t) N) int j,rN; for(j=0;jN;j+) rj=t0j; for(j:0;jN;j+) /*found*/ t0N-j-1=tj_; for(j=0;jN;j+) tj0=tN-1j; /*fou
6、nd*/ for(j=N-1;j=0;_) tN-1N-1-j=tjN-1; for(j=N-1;j=0;j-) /*found*/ tjN-1=r_; main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10,i,j; printf(“/nThe 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
7、=0;jN;j+) printf(“%2d“,tij); printf(“/n“); (分数:30.00)_正确答案:()解析:(1)0 (2)j- (3)j 答案考生文件夹 解析 函数 fun 操作顺序是:首先将第一行元素的值存入临时数组 r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。 第一空:由审题分析可知,此处是使第一列成为第一行,即把笫一列元素移动到第一行,第一列元素是tj0,第一行元素是 t0N-j-1,故第一空处应为“0”。 第二空:第四个循环是最后一列成为最后一行,即将最后一列移动到最后一行,“for(j=N-1;j=0;_)
8、”循环变量 j 从 N-1 开始,到 0 结束,共循环 N 次,故 j 每次减一,第三空处是“j-”。第三空:最后一个循环将临时数组中的元素成为最后一列,即 tjN-1=rj,故第三空处应为“j”。 考点 二维数组、for 循环结构。二、程序修改题(总题数:1,分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。 例如,当 n 为 5 时,函数值应为:10.407143。f(x)函数定义如下: (分数:30.00)_正确答案:()解析:(1)double f(double x) (2)ret
9、urn s; 答案考生文件夹 解析 本题中函数的功能是计算题干中给出的公式值。主函数 main 调用 fun 函数,fun函数的功能是实现数列的求解。其中 fun 函数中调用实现每一项的 f 函数。 (1)第一个标识下 f 函数的定义缺少返回值类型,所以将“f(double x)”改为“double f(double x)”。 (2)第二个标识下返回语句没有分号结束。所以,第二个标识下“return s”应该改为“return s;”。 考点 函数的定义以及调用。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,它的功能是计算: (分数:40.00)_正确答案:()解析:double s=0.0; int i; for(i=1;i=m;i+)s+=log(1.0*i); s=sqrt(s); return s; 答案考生文件夹 解析 该程序功能是计算并输出多项式值。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行求值。 (1)调用 log(n)函数求 ln(n)。 (2)对调用 log(n)进行累加求和,求得根号里的内容。 (3)最后调用 C 语言的库函数 sqrt 计算(2)中求得值的平方根。 考点 for 循环结构、数据类型和常量、变量。