1、国家二级 C语言机试(操作题)模拟试卷 209及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:将 a所指 35矩阵中第 k列的元素左移到第 0列,第 k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。 例如,有下列矩阵: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 若 k为 2,程序执行结果为 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include std
2、io h 2 #define M 3 3 #define N 5 4 void fun(2nt(* a)N, int k) 5 int i, j, p, temp; 6 *found* 7 for(p=1; p 【 1】 ; p+) 8 for(i=0; i M; i+) 9 temp=ai0; 10 *found* 11 for(j=0; j 【 2】 ; j+) 12 aij=aij+1; 13 * found* 14 aiN-1=【 3】 ; 15 16 17 main() 18 int XMN=1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, i
3、,j; 19 printf(The array before mov-ing: n n); 20 for(i=0; i M; i+) 21 for(j=0; j N; j+) 22 printf( 3 d, xij); 23 printf( n); 24 25 fun(x, 2); 26 printf(The array after mov-ing: n n); 27 for(i=0; i M; i+) 28 for(j=0 ; j N; j+) 29 printf( 3 d, xij); 30 printf( n); 31 32 二、程序修改题 2 下列给定程序中,函数 fun的功能是:用下
4、面的公式求 的近似值,直到最后一项的绝对值小于指定的数 (参数 num)为止。 例如,程序运行后,输入 0 0001,则程序输出 3 1414。 请改正程序中的错误,使它能得出正确的结果 。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdlib h 2 #include math h 3 #include stdio h4 float fun(float num)5 6 int s; 7 float n , t , pi; 8 t=1; pi=0; n=1; s=1; 9 *found* 10 while(t=num)11 12
5、 pi=pi+t; 13 n=n+2; 14 s=-s;15 *found* 16 t=s n; 17 18 pi=pi*4; 19 return pi; 20 21 void main()22 23 float n1, n2; 24 system(CLS);25 printf(Enter a float num-ber:26 scanf( f, 28 printf( 6 4 f n, n2); 29 三、程序设计题 3 清编写函数 fun,其功能是:移动一维数组中的内容,若数组中有 n个整数,要求把下标从 0 p(含 p, p小于等于 n-1)的数组元素平移到数组的最后。 例如,一维数组中的
6、原始内容为: 1、 2、 3、 4、 5、 6、 7、 8、 9、 10; P的值为 3。移动后,一维数组中的内容应为: 5、 6、 7、 8、 9、10、 1、 2、 3、 4。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: 1 #include stdio h 2 #define N 80 3 void fun(int*w, int p, int n) 4 5 6 main () 7 int aN=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15; 8
7、 int i, p n=15; 9 printf (The original da-ta: n); 10 for(i=0; i=num) (2)t=s n; 【试题解析】 (1)函数 fun中 while语句的作用是,当新的一项大于给定参数时,循环累计计算 s的值。题 日要求最后一项的绝对值小于给定参数,因此循环条件应当是 while(fabs(t)=num)。 (2)变量 t用来存放最后一项的值,因为每一项均为 1或 -1除以一个数,所以此处应使用除法运算符 “ ”。 三、程序设计题 3 【正确答案】 1 void fun(int * w, int p, int n) 2 int x, j,
8、 ch; 3 for(x=0; x=p; x+) 4 ch=w0; 5 for(j=1; jn; j+) *通过 for循环语句,将 p+1到 n-1(含 n-1)之间的数细元素依次向前移动 p+1个存储单元 * 6 7 wj-1=wj; 8 9 wn-1=ch; *将 0到 p个数组元素逐一赋给数组 wn-1* 10 11 【试题解析】 本题要求把下标从 0 p(含 p, p小于等于 n-1)的数组元素平移到数组的最后,可以根据输入的 p值,通过 for循环语句,将 p+1 n-1(含 n-1)之间的数组元素依次向前移动 p+1个存储单元,即 wj-1=wj;,同时将 0 p个数组元素逐一赋给数组 wn-1,也就 是通过语句 wn-1=ch;来实现此操作的。