国家二级C语言机试(操作题)模拟试卷360
程序填空题
1.人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 8
typedef struct
{ int num;
int year,month,day
} STU;
int fun (STU *std, STU *k, int year)
{ int i,n=0;
if(____1____ ==year)
return (____3____);
}
main ()
{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,1984f 8,19}};
STU k[N]; int i,n,year;
printf(\\
(1) std[i] .year
(2) std[i]
(3) n
解析:fun函数的功能是在结构体数组std中找出指定出生年份的人员将其数据放在形参k所指的数组中。
第一空:比较结构体的出生年份是否等于year,std是结构体指针,指向结构体数组的首地址,因此访问一个结构体的year成员是“std[i].year”.因此第一空处应为“if(std[i].yeaI==year)”。
第二空:这里是将找到的数据放在形参k所指的数组中,k是指针变量,k指向结构体数组的首地址,std[i]是结构体的地址,因此等号左边也应该是地址,故第二空处应为“k[n++]=std[i];”。
第三空:fun函数的返回值是满足指定条件的人数n,故第三空处是“return (n),”。
程序修改题
2.给定程序MODI1.C的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数:2310,则应输出:2、3、5、7,11。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
IsPrime (int n) ;
{ int i,m;
m = 1;
if ! (n% i)
{ m =0; break ;}
return (m) ;
}
main ()
{ int j,k;
printf ( \\
(1)Is Prime (int n)
(2)if(!(n%i))
解析:函数功能是求整数n的素数因子,IsPrime自定义函数的功能是判断j是否为素数。
(1)第一个标识下面的“Is Prime (int n);”在程序中显然是一个函数,因此应将后面的分号去掉。
(2)第二个标识下面的if语句后面缺少括号,因此,“if!(n%i)\\
程序设计题
3.己知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数mam和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#define N 10
typedef struct ss
{ char num[10]; int s; } STU;
fun(STU a[],STU *s)
{
}
main ()
{ \\
1 int i, max=a[O].s, j=0;
2 for(i=1; i<N; i++)
3 if(max<a[i] .s){
4 j =i;
5 max=a [i] .s; )
6 * s=a[j];
解析:该程序功能是求最高分数的学生。本题是关于求解结构体中某些成员的最大值,首先将第一个值设定为最大值,并在循环中将其他所有值与该值进行比较,求得最大值。然后将最大值与所有值进行比较,求得所有的最大值。
本文档预览:3600字符,共2551字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载