首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
admin
2019-04-14
36
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#define N 5
typedef struct student{
long sno;
char name[10];
float score[3];}STU;
void fun(chat*filename)
{
FILE *fp;int i,j;
STU S[N],1;
/* * * * * * found * * * * * */
fp=fopen(filename,___1___);
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;i<N—1;i+ +)
for(j=i+1;j<N;j+ +)
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);
}
main()
{
STU[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);
pfintf(″\nThe original data:\n″);
for(j=0;j<N;j+ +)
{
printf(″\nNo:%ld Name:%—8sScores:″,t[j].sno,t[j].name);
for(i=0;i<3;i+ +)
printf(″%6.2f″,t[j].score
);
printf(″\n″);
}
fun(″student.dat″);
printf(″\nThe data after sorting:\n″);
fp=fopen(″student.dat″,″rb″);
fread(ss,sizeof(STU),5,fp);
fclose(fp);
for(j=0;j<N;j+ +)
{
printf(″\nNo:%ld Name:%—8sScores:″,ss[j].sno,ss[j].name);
for(i=0;i<3;i+ +)
printf(″%6.2f″,ss[j].score
);
printf(″\n″);
}
}
选项
答案
(1)″r″ (2)> (3)fwrite
解析
填空1:题目中要求从形参filename所指的文件中读入学生的数据,以此可以看出本空应该填写″r″。
填空2:此处的if语句是比较学号的大小,如果学号大就和学号小的换位,以此本空填写>。
填空3:题目要求所有的学生数据均以二进制方式输出到文件中,因此本空填写:fwrite。
转载请注明原文地址:https://kaotiyun.com/show/H1Rp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
在C语言程序中,下列说法正确的是()。
以下程序的输出结果是()。#include<stdio.h>voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[
下列程序的运行结果为#includevoidabc(char*str){inta,b;for(a=b=0;str[a]!=’\0’;a++)if(str[a]!=’c’)str[b++]=str[a];str[b]=’\0
以下程序运行后的输出结果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}
假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是______。
设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有()个元素。
若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。
在关系数据库中,对一个关系做投影操作后,新关系的元组个数将()
下列叙述中正确的是()。
以下说法正确的是()
随机试题
甲、乙、丙、丁四人的车分别为白色、银色、蓝色和红色。在问到他们各自车的颜色时,甲说:“乙的车不是白色。”乙说:“丙的车是红色的。”丙说:“丁的车不是蓝色的。”丁说:“甲、乙、丙三人中有一个人的车是红色的,而且只有这个人说的是实话。”如果丁说的是实话,那么以
下列行政许可中属于特许的有()。
对于单台电动机,熔体额定电流的计算公式为()(INV为晶体管额定电流平均值;IMN为电动机额定电流)。
当实际产出连续()年下降,而实际GDP与潜在GDP之间的缺口并不大时,经济的下降被称作衰退。
甲公司2017年财务报告于2018年3月20日经董事会批准对外报出,其于2018年发生的下列事项中,不考虑其他因素,应当作为2017年度资产负债表日后调整事项的有()。
若使本金经过4年后增长1倍,且每半年复利一次,则年名义利率为()。已知:(F/P,9%,8)=1.9926,(F/P,10%,8)=2.1436
从所给的四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性。
Whereistheconversationmostlikelytakingplace?
Before,wheneverwehadwealth,westarteddiscussingpoverty.Whynotnow?Whyisthecurrentpoliticsofwealthandpovertyse
PassageTwo(1)Afewyearsback,mythree-year-oldsonMaxhadanunyieldingpassionforThomastheTankEnginetrains.Pi
最新回复
(
0
)