国家二级C语言机试(操作题)模拟试卷398
程序填空题
1.给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:
1 2 3 计算结果为 1 0 0
4 5 66 5 0
7 8 910 14 9
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构1
1 #include<stdio.h>
2 #define N 4
3 /**********found**********/
4 void fun(int(*t)__1__)
5 { int i,j;
6 for(i=1 ; i<N;i++)
7 ( for(j=0;j<i;j++)
8 {
9 /**********found**********/
10 __2___=t[i][j]+t[j][i];
11 /**********found**********/
12 __3__=0;
13 }
14 }
15 }
16 main()
17 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
18 printf(’’\nThe originalarray:\n’’);
19 for(i=0;i<N;i++)
20 {for(j=0;j<N;j++) printf(’’%2d’’,t[i][j]);
21 printf(’’\n’’);
22 }
23 fun(t);
24 printf(’’\nThe result is:\n’’);
25 for(i=0; i<N;i++)
26 { for(j=0 ; j<N;j++)printf(’’%2d’’,t[i][j]);
27 printf(’’\n’’);
28 }
29 }
(1)[N] (2)t[i][j] (3) t[j][i]
解析:第一空:在主函数中fun函数的调用形式是“fun(t);”,t是数组名,故fun函数的参数是指针,因此第一空处应为“[N]”。第二空:“__2__=t[i][j]+t[j][i];”是将对称元素相加存放在左下三角元素中,左下三角元素可表示为t[i][j],故第二空处应为“t[i][j]”。第三空:“__3__=0;”是将右上三角元素置0,右上三角元素可表示为t[j][i],故第三空为“t[i][i]”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:87653142时,t中的数为:8642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 void fun(long s,long *t)
3 { int d;
4 long s1=1;
5 *t=0;
6 while(s>0)
7 {d=s%10;
8 /**********found**********/
9 if(d%2=0)
10 {*t=d *s1+*t;
11 s1 *=10;
12 }
13 /**********found**********/
14 s\=10;
15 }}
16 main()
17 {long s,t;
18 printf(’’\nPlease enter s:’’); scanf(’’%1d’’,&s);
19 fun(s,&t);
20 printf(’’The result is:%1d\n’’,t);
21 }
(1)if(d%2==0) (2)s/=10;
解析:(1)第一个标识是判断d是否是偶数,即比较“d%2”是否等于0,在C语言中,“==”表示的是“等于”,而“=”是赋值,因此第一个标识下“if(d%2=0)”应改为“if(d%2==0)”。
(2)第二个标识下的“s\=10;”是对a的截取,这里的“\”本意应该是除号,但这个在C语言中是不可识别的,所以第二个标识下“s\=10;”应该改为“s/=10;”。
程序设计题
3.请编写一个函数void fun(char *tt,int pp[]),统计在tt所指字符串中’’’a’’’到’’’z’’’26个小写字母各自出现的次数,并依次放在pp所指数组中。
例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:
3 3 3 2 2 1 1 0 0 0 0 0 0 0 O 0 0 0 0 0 0 0 0 0 0 0
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 #include<string.h>
3 void fun(char *tt,int pp[])
4 {
5
6 }
7 main()
8 { char aa[1000];
9 int bb[26],k;
10 void NONO();
11 printf(’’\nPlease enter a char string:’’);scanf(’’%s’’,aa);
12 fun(aa,bb);
13 for(k=0 ; k<26;k++) printf(’’%d’’,bb[k]);
14 printf(’’\n’’);
15 NONO();
16 }
17 void NONO()
18 {/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
19 char as[1000];
20 int bb[26],k,i;
21 FILE *rf,*wf;
22 rf=fopen(’’in.dat’’,’’r’’);
23 wf=fopen(’’out.dat’’,’’w’’);
24 for(i=0;i<10;i++) {
25 fscanf(rf,’’%s’’,aa);
26 fun(aa,bb);
27
本文档预览:3600字符,共4125字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载