1、国家二级 C语言机试(操作题)模拟试卷 703及答案与解析 一、程序填空题 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中。 不得增行或删行,也不得更改程序的结构 ! 1 #i
2、nclude stdio h 2 #define N 4 3 void fun(int(*t)N) 4 int j, rN; 5 for(j=0; j N; j+)rj=t0j; 6 for(j=0; j N; j+) 7 *found* 8 t0N-j-=tj_1_; 9 for(j=0; j N; j+) 10 tj0=tN-1j; 11 *found* 12 for(j=N-1; j =0; _2_) 13 tN-1N-1-j=tjN-1; 14 for(j=N-1; j =0; j-) 15 *found* 16 tjN-1=r_3_; 17 18 main() 19 int tN=2
3、1, 12, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21,33, 10, i, j; 20 printf( nThe original array: n); 21 for(i=0; i N; i+) 22 for(j=0; j N; j+)printf( 2d, tij); 23 printf( n); 24 25 fun(t); 26 printf( nThe result is: n); 27 for(i=0; i N; i+) 28 for(j=0; j N; j+)printf( 2d, tij); 29 printf( n); 30
4、31 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n) 的值。例如,当 n为 5时,函数值应为:10 407143。 f(x)函数定义如下: 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不 得增行或删行,也不得更改程序的结构 !1 #include stdio h 2 #include math h 3 *found* 4 f fdouble x)5 6 if(x=0 0 x=2 0)7 return 0 0; 8 else if(x 0 0)9 return(x-1
5、) (x-2); 10 else11 return(x+1) (x-2); 12 13 double fun(int n)14 int i; double s=0 0, y; 15 for(i=0n; i =n; i+)16 y=f(1 0*i); s+=y; 17 *found* 18 return s19 20 main()21 22 printf( f n, fun(5); 23 三、程序设计题 3 编写函数 fun,它的功能是计算: s作为函数值返回。 在 C语言中可调用 log(n)数求 ln(n)。 log函数的引用说明是: double log(double x)。 例如,若 m
6、的值为: 20, fun函数值为: 6 506583。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include math h 2 #includestdio h 3 double fun(int m)4 56 7 main()8 9 void NONO(); 10 printzf( f n,fun(20); 11 NONO(); 12 13 void NONO()14 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 15 FILE *fp, *wf; 16 int i
7、, n; 17 ctouble s; 18 fp=fopen(in dat, r), 19 wf=fopen(out dat, w); 20 for(i=0; i 10; i+) 21 fscanf(fp, d, n); 22 s=fun(n); 23 fprintf(wf, f n, s);24 25 fclose(fp); 26 fclose(wf); 27 国家二级 C语言机试(操作题)模拟试卷 703答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)j- (3)j 【试题解析】 函数 fun操作顺序是:首先将第一行元素的值存入临时数组 r,然后使第一列成为第一行,最后一行成
8、为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。 第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一 列元素是 “tj0”,第一行元素是 “t0N-j-1, ”故第一空处应为“0”。 第二空:第四个循环是最后一列成为最后一行,即将最后一列移动到最后一行, “for(j=N-1; i =0; _2_)”循环变量 j从 N-1开始,到 O结束,共循环 N次,故 j每次减 1,第三空处是 “j-”。 第三空:最后一个循环将临时数组中的元素成为最后 1列,即 “tjN-1=rj”,故第三空处应为 “j”。 二、程序修改题 2 【正确答案】 (1)doubl
9、e f(double x) (2)return s; 【试题解析】 本题中函数的功能是计算题干中给出的公式值。主函数 main调用fun函数, fun函数的功能是实现数列的求解。其中, fun函数中调用实现每一项的 f函数。 (1)第一个标识下 f函数的定义缺少返回值类型,所以,将 “f(double x)”改为“doublef(double x)”。 (2)第二个标识下返回语句没有分号结束。所以,第二个标识下 “return s”应该改为 “return s: ”。 三、程序设计题 3 【正确答案】 1 double s=0 0; 2 int i; 3 for(i=1; i =m; i+)s+=log(1 0 *i); 4 s=sqrt(s); 5 return s; 【试题解析】 该程序功能是计算并输出多项式值。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行求值。 (1)调用 log(n)函数求 ln(n)。 (2)对调用 log(n)进行累加求和,求得根号里的内容。 (3)最后调用 C语言的库函数 sqrt计算 (2)中求得值的平方根。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1