国家二级C语言机试(操作题)模拟试卷381
程序填空题
1.给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
1 2 3 计算结果为 7 4 1
4 5 6 8 5 2
7 8 9 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-1]=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(2=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
解析:第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N-j-1]”,故第一空处应为“0”。
第二空:第四个循环是最后一列成为最后一行,即将最后一列移动到最后一行,“for(j=N-1;j>=0;__2__)”循环变量i从N-1开始,到0结束,共循环N次,故j每次减1,第三空处是“i–”。
第三空:最后一个循环将临时数组中的元素成为最后1列,即“t[=i][N-1]=r[j]”,故第三空处应为“j”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #define M 5
3 /**********found**********/
4 int fun(int n,int xx[][])
5 { int i,j,sum=0;
6 printf(’’\nThe%d x%d matrix:\n’’, M, M);
7 for(i=0 ; i<M;i++)
8 { for(j=0;j<M;j++)
9 /**********found**********/
10 printf(’’%f’’,xx[i][j]);
11 printf(’’\n’’);
12 }
13 for(i=0;i<n;i++)
14 sum +=xx[i][i]+xx[i][n-i-1];
15 return(sum);
16 }
17 main()
18 { int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
19 printf(’’\nThe sum of all elements on 2 diagnals is%d.’’,fun(M,aa));
20 }
(1)int fun(int n,int xx[][M]) (2)printf(’’%4d’’,xx[i][j]);
解析:函数的功能是求两条对角线上各元素之和。
(1)第一个标识下fun函数的定义中对于二二维数组的定义在原题中并没有给出空间,所以将“int fun(int n,int xx[][])”改为“int fun(int n,int xx[][M])”。(2)fun函数中n是int型,C语言输出语句中整型应该是%d,所以第二个标识下“printf(’’%f’’,xX[i][j]);”应该改为“printf(’’%4d\\
程序设计题
3.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
例如,输入beijing<CR>shanghai<CR>(<CR>为回车键),函数将返回shanghai。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 char *fun(char *s,char *t)
3 {
4 }
5 main()
6 { char a[20],b[20];
7 void NONO();
8 printf(’’Input:1th string:’’);
9 gets(a);
10 printf(’’Input 2th string :’’);
11 gets(b);
12 printf(’’%s\n’’,fun(a,b));
13 NONO();
14 }
15 void NON
本文档预览:3600字符,共4562字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载