国家二级C语言机试(操作题)模拟试卷839
程序填空题
1.人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#define N 8
typedef struct
{ int num;
int year,month,day;
}STU;
int fun(STU*std,STU*k,int year)
{ int i,n=0;
for (i=0;i<Nj i++)
/**********found**********/
if(___1___==year)
/**********found**********/
k[n++]=___2___;
/**********found**********/
return(___3___);
}
main()
{STU std[N]={{1,1984,2,15),{2,1983,9,21},{3,1984,9,1},{4,198 3,7,15},{51985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,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].year==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<stdio.h>
/**********found**********/
IsPrime(int n);
{ int i,m;
m=1;
for(i=2;i<n;i++)
/**********found**********/
if !(n%i)
{ m=0;break;}
return(m);
}
main()
{ int j,k;
printf(\\
(1)IsPrime(int n)
(2)if(!(n%i))
解析:函数功能是求整数n的素数因子,IsPrime自定义函数的功能是判断j是否为素数。
(1)第一个标识下面的“IsPrime(int n);”在程序中显然是一个函数,因此,应将后面的分号去掉。
(2)第二个标识下面的if语句后面缺少括号,因此,“if!(n%i)”应改为“if(!(n%i))”。
该题主要考查标点符号、运算符、基本定义。
程序设计题
3.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#include<string.h>
#defiFie N 10
typedef struer ss
{ char num[10];int s;}STU;
fun(STU a[],STU*s)
{
}
main()
{STU a[N]={{\\
int i,max=a[0].s,j=0;
for(i=1;i<N;i++) if(max<a[i].s){
j=i;
max=a[i].s;}
*s=a[j];
解析:该程序功能是求最高分数的学生。本题是关于求解结构体中某些成员的最大值,首先将第一个值设定为最大值,并在循环中将其他所有值与该值进行比较,求得最大值。然后将最大值与所有值进行比较,求得所有的最大值。
本文档预览:3600字符,共2753字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载