国家二级C语言机试(操作题)模拟试卷703
程序填空题
1.给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算结果为
7 4 1
8 5 2
9 6 3
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #define N 4
3 void fun(int(*t)[N])
4 { int j,r[N];
5 for(j=0;j<N;j++)r[j]=t[0][j];
6 for(j=0;j<N;j++)
7 /**********found**********/
8 t[0][N-j-]=t[j][___1____];
9 for(j=0;j<N; j++)
10 t[j][0]=t[N-1][j];
11 /**********found**********/
12 for(j=N-1;j>=0;___2___)
13 t[N-1][N-1-j]=t[j][N-1];
14 for(j=N-1;j>=0;j–)
15 /**********found**********/
16 t[j][N-1]=r[__3___];
17 }
18 main()
19 {int t[][N]={21,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’’,t[i][j]);
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’’,t[i][j]);
29 printf(’’\n’’);
30 }
31 }
(1)0
(2)j–
(3)j
解析:函数fun操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N-j-1],”故第一空处应为“0”。
第二空:第四个循环是最后一列成为最后一行,即将最后一列移动到最后一行,“for(j=N-1;i>=0;__2__)”循环变量j从N-1开始,到O结束,共循环N次,故j每次减1,第三空处是“j–”。
第三空:最后一个循环将临时数组中的元素成为最后1列,即“t[j][N-1]=r[j]”,故第三空处应为“j”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:计算
S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。例如,当n为5时,函数值应为:10.407143。f(x)函数定义如下:
(1)double 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.编写函数fun,它的功能是计算:
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)中求得值的平方根。
本文档预览:3600字符,共2848字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载