首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
admin
2015-06-08
61
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 5
typedef Struct Student{
long Sno;
char name[10];
float Score[3];
}STU;
VOid fun(char *filerlaname)
{FILE *fp;int i,j;
STU S[N],t ;
/**********found***********/
fp=fopen(filename,___1___);
fread(S,Sizeof(STU),N,fP);
fclOSe(fp);
for (i=0; i
for(J=i+1 ; j
/**********found***********/
if (S
.sno ___2___ s[j].sno)
{t=s
;S
=s[j];s[j]=t;)
fp=fopen(filename,“wb”);
/**********found***********/
___3___ (s,sizeof(STU),N,fp);/*二
进制输出*/
fclose(fp);
}
msirl()
{STU t[N]={{10005,“ZhangSan”,95,
80,88},{10003,“LiSi”,85,70,78},
{10002,”CaoKai”,75,60,88),{10004,
“FangFang”,90,82,87},{10001,
“MaChao”,91,92,77)),SS[N];
int i,j;FILE *fp;
fP=fopen(“Student.dat”,“wb”);
fwrite(t,Sizeof(STU),5,fp);
fclose(fp);
printf(“\n\nThe original data:
\n\n”);
for(j=0;j
{printf(“\nNo:%1d Name:%一8s
Scores:”,t[j].Sno,t[j].name);
for (i=0; i<3; i++)prjntf
(“%6.2 f”,t[j].score
);
Pr2ntf(“\n”);
}
fun(“Student.dat”);
printf(“\n\nThe data after sorting:
\n\n”);
fP=fopen(“Student.dat”,“rb”);
fread(SS,sizeof(STU),5,fp);
fclose(fp);
for(j=0;j
{printf(“\nNo:%1d Name: %一8S
Scores: ”,ss[j].sno, ss[j].name);
for (i=0; i<3; i++)printf
(“%6.2 f”,ss[j].score
);
printf(“\n”);
}
}
选项
答案
(1)“rb” (2)> (3)fwrite
解析
本题中函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
[解题思路]
第一空:根据题干要求,“fp=fopen(filename,__1__);”是打开filename所指文件,读出学生数据“fread(s,sizeof(STU),N,fp);”,然后关闭文件“fclose(fp)”,故第一空处是只读方式打开文件,因此第一空处应为““rb””。
第二空:根据题意,for循环是将学生数据按照学号从小到大排序后,这里采用的是冒泡法排序,如果发现前面的数据比后面的大则交换,故第二窄处应为“>”。
第三空:文件是以只写方式(“wb”)打开,执行“__3__(s,sizeof(STU),N,fp);”后,天闭文件,即第三处是一次把所有学生数据写入文件,这是执行数据块写函数fwrite,故第三空处为“fwrite”。
转载请注明原文地址:https://kaotiyun.com/show/tiJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
若有如下程序:sub(p,n)int(*p)[3],n;{inti;for(i=0;i<=n;i++)printf("%d",p[i][2]);}main(){ints[3][3]={1,2,
对下述程序,正确的判断是()。main(){inta,b;scanf("%d",&a);scanf("%d",&b);if(a>b)a+=b;b++;elseb+=a;
下列程序的输出结果是【】。intt(intx,inty,intcp,intdp){cp=x*x+y*y;dp=x*x-y*y;}main(){inta=4,b=3,c=5,d=6
下列关键字中,不属于C语言变量存储类别的是______。
有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为______。
若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(fp)的返回值是_______。
在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有【】个元素。
以下不能正确定义二维数组的选项是()。
函数pi的功能是根据以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)现在请你在下面的函数中填空,完成求π的功能。#include“math.h"{doubles=0.0;
若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。
随机试题
焊缝检验方案的内容不包括()。
根据我国票据法,以下说法中正确的是()
患者女。因气短来诊。查体:肝浊音界下移,该患者可能是
被照体矢状面与胶片平行的摄影体位有
弥散性血管内凝血,下述哪项实验室检查不正确
A.发散风寒B.温经散寒C.温阳化气D.温阳复脉E.平冲降逆五苓散与苓桂术甘汤使用桂枝的相同意义是
半淋溶土纲土壤主要包括燥红土、褐土、灰褐土、黑土、灰色森林土五个方面土类。()
商业银行进行操作风险自我评估有助于鼓励机构内部各级单位承担责任并主动对操作风险进行识别和管理。()
李大叔在一次野外作业时,不慎从高处摔下,摔断了右腿,留下了瘫痪的后遗症。经过住院治疗以后,李大叔身体有所恢复,在出院前,他邀请社会工作者小华帮助进行居室无障碍改造。此时,小华首先应该做的事情是()。
Evaporationfromseawaterisabout5%lessthanfromfreshwater,_________________________(当其他所有条件都相同时).
最新回复
(
0
)