国家二级C语言程序设计机试(程序填空题)模拟试卷5
程序填空题
1.给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun()的作用是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include
typedef struct list
{char dam;
struct list*next:
}Q;
void hn(Q*pa,Q*pb,Q*pc)
{Q*p;
/******found******/
pa一>next=___1___;
pb一>next=pc;
P=pa;
while(P)
{
/******found******/
printf(“%c”,___2___);
/******found******/
P=___3___;
}
pfinff(“\n”);
}
main()
{Q a,b,c;
a.dam=‘E’;b.data=‘F’;
c.data=‘G’:C.next=NULL;
hn(&a,&b,&c);
}
(1)pb (2)p一>data (3)p一>next
解析:填空1:将三个结点连接起来,即将pa的指针域指向pb,pb的指针域指向pc。
填空2:输出链表结点中的数据,表示为p一>data。
填空3:指针后移,指向下一个结点,即p=p一>next。
2.程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
nclude
#define N 5
typedef struct student{
long sno;
char name[10];
float score[3];}STU;
void fun(char*filename)
{
FILE*fp;int i,j;
STU s[N],t;
/******found ******/
fp=fopen(filename,___1___);
fread(s,sizeof(STU),N,fp);
felose(fp);
for(i=0;i<N一1;i++)
for(j=i+1;j<N;j++)
if(s[i].sno___2___s[j].sno)
{
t=s[i];s[i]=8[j];s[j]=t;
}
fp=fopen(filename,“wb”);
/*****found*****/
___3___(s,sizeof(STU),N,fp);
fclose(fp);
}
main()
{
STU[N]={“10005,”ZhangSan”,95,80,88}
{10003,“LiSi”,85,70,78},
{10002,“CaoKai”,75,60,88},
{10004,“FangFang”,90,82,87},
{10001,“NaChao”,91,92,77}},ss[N];
int i,j;FILE*fp;
fp=fopen(“student.dat”,“wb”);
fwrite(t,sizeof(STU),5,fp);
felose(fp);
prinff(“\nThe original data:\n”);
for(j=0;j<N;j++)
{
prinff(“\nNo:%ld Name:%一8s
Scores:“,t[j].sno,t[j].name);
for(i=0;i<3;i++)
printf(“%6.2f”,t[J]。score[i]);
printf(“\n”);
}
fun(“student.dat”);
prinff(“\nThe data after sorting:\n”);
fp=fopen(“student.dat”,”rb”);
fread(ss,sizeof(STU),5,fp);
fclose(fp);
for(j=0;j<N;j++)
{
prinff(“\nNo:%ld Name;%一8s
Scores:“,ss[j].sno,ssrj].name);
for(i=0;i<3;i++)
prinff(“%6.2f”,8s[j].score[i]);
printf(“\n”);
}
}
(1)“r” (2)> (3)fwrite
解析:填空1:题目中要求从形参fiename所指的文件中读入学生的数据,以此可以看出本空应该填写“r”。
填空2:此处的if语句是比较学号的大小,如果学号大就和学号小的换位,以此本空填写>。
填空3:题目要求所有的学生数据均以二进制方式输出到文件中,因此本空填写fwrite。
3.函数fun的功能是:在有n个元素的结构体数组std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。
例如,主函数中给出了4名学生的数据,则程序运行的结果为:
学号:N1002学号:N1006
共有2位学生有不及格科目
请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#inelude
typedef struet
{
char nllm[8];
double 81201\\
(1)STU (2)11 (3)k
解析:本题考查:对结构体的定义和使用,以及逻辑运算符的使用。
填空1:STU结构体别名,通过main()中的语句可知。
填空2:11只要学生两门课成绩有不及格的,就算不及格,因此使
本文档预览:3600字符,共4936字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载