国家二级C语言机试(操作题)模拟试卷720
程序填空题
1.人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 #define N 8
3 typedef struct
4 { int numt
5 int year,month,day;
6 } STU;
7 int fun(STU *std,STU *k,int year)
8 { int i,n=0;
9 for(i=0;i<N;i++)
10 /**********found**********/
11 if(__1__==year)
12 /**********found**********/
13 k[n++]=__2__;
14 /**********found**********/
15 return(__3__);
16 }
17 main()
18 {STU std[N]={{1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{.4,1983,7,15},{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};
10 STU k[N];int i,n,year;
20 printf(’’Enter a year:’’);scanf(’’%d’’,&year);
21 n=fun(std,k,year);
22 if(n==0)
23 printf(’’\nNo person was born in%d\n’’,year);
24 else
25 {printf(’’\nThese persons were born in%d\n’’,year);
26 for(i=0;i<n;i++)
27 printf(’’%d %d-%d-%d\n’’,k[i].num,k[i].year,k[i].month,k[i].day);
28 }
29 }
(1)std[i].year
(2)std[i]
(3)n
解析:fun函数的功能是在结构体数组std中找出指定出生年份的人员将其数据放在形参k所指的数组中。
第一空:比较结构体的出生年份是否等于year,std是结构体指针,指向结构体数组的首地址,因此,访问一个结构体的year成员是“std[i].year”,因此,第一空处应为“if(std[i].year==year)”。
第二空:这里是将找到的数据放在形参k所指的数组中,k是指针变量,k指向结构体数组的首地址,std[i]是结构体的地址,因此,等号左边也应该是地址,故第二空处应为“1([n++]=std[i];”。
第三空:fun函数的返回值是满足指定条件的人数n,故第三空处是“return(n);”。
程序修改题
2.给定程序MODI1.C的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数:2310,则应输出:2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 /************found************/
3 IsPrime(int r1);
4 { int i,m;
5 m=1;
6 for(i=2;i<n;i++)
7 /************found************/
8 if !(n%i)
9 { m=0;break;}
10 return(m);
11 }
12 main()
13 { int j,k;
14 printf(’’\nPlease enter an integer number between 2 and 10000:’’);scanf(’’%d’’,&k);
15 printf{’’\n\nThe prime factor(s)of%d iS(are):’’,k);
16 for(j=2;j<=k;j++)
17 if((!(k%j))&&(IsPrime(j)) )printf(’’\n%4d’’,j);
18 printf(’’\n’’);
19 }
(1)IsPrime(int n)
(2)if(!(n%i))
解析:函数功能是求整数n的素数因子,IsPrime自定义函数的功能是判断j是否为素数。
(1)第一个标识下面的“IsPrime(intn);”在程序中显然是一个函数,因此,应将后面的分号去掉。
(2)第二个标识下面的if语句后面缺少括号,因此,“if!(n%i)”应改为“if!(n%i))”。
该题主要考查标点符号、运算符、基本定义。
程序设计题
3.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 #include<string.h>
3 #define N 10
4 typedef struct ss
5 { char num[10];int s;} STU;
6 fun(STU a(1.STU *s)
7 {
8
9 }
10 main()
11 {STU a[N]={{’’A01’’,81},{’’A02’’,89},{’’A03’’,66},{’’A04’’,87},{’’A05’’,77},{’’A06”,90},{’’A07’’,79},{’’A08’’,61},{’’A0 9’’,8 0},{’’A10’’,71}},m;
12 int i;
13 printf(’’*****The original data *****\n¨);
14 for(i=0;i<N;i++)printf(’’No=%s Mark=%d\n’’,a[i].num,a[i].s);
15 fun(a,&m);
本文档预览:3600字符,共4420字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载