首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
admin
2015-06-08
52
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和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://jikaoti.com/ti/zjn0FFFM
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a则不能表示a数组元素的表达式是()。
C语言中,函数值类型的定义可以默认,此时函数值的隐含类型是()。
在C语言系统中,假设int类型数据占两个字节,则double、long、unsignedint、char类型数据所占字节数分别为()。
下面程序的输出是【】。main(){enumem{em1=3,em2=1,em3};char*aa[]={"AA","BB","CC","DD"};printf("%s%s%s\n",aa[em1],aa[e
下面程序的输出是【】。main(){intarr[10],i,k=0;for(i=0;i<10;i++)arr[i]=i;for(i=1;i<4;i++)k+=arr
有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib
有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=
有如下程序intfunc(inta,intB){return(a+B);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);prin
有如下程序main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}pr
若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是_______。
随机试题
下面不是“戊戌六君子”的是()
Strangethingshappentotimewhenyoutravel,becausetheearthisdividedintotwentyfourtimezones,onehourapart.Youcan
案情:甲市A区的运达公司与乙市B区的天盛公司签订建设施工合同,约定由天盛公司承建运达公司在丙市C区的办公大楼,因合同履行发生的一切纠纷,提交设立在甲市的D仲裁委员会进行仲裁。之后双方又达成了一个补充协议,约定合同发生纠纷后也可以向乙市B区法院起诉
权益投资主要有()三种结构方式。
现有理财保险产品为增长型永续年金性质,第一年将分红3000元,并得以3%的速度增长下去,年贴现率为6%,那么该产品的现值为()元。
甲企业于2019年1月1日以680万元的价格购进当日发行的面值为600万元的公司债券,其中债券的买价为675万元,交易费用为5万元。该公司债券票面利率为8%,实际利率为6%,期限为5年,到期一次还本付息,企业将其划分为以摊余成本计量的金融资产。2019年1
在个案服务中,社会工作者在收集完资料并对服务对象的问题进行评估之后,与服务对象一起制订计划。为了保证计划的完备,社会工作者应做到()。
求幂级数的和函数f(x)及其极值。
根据以下资料,回答下列问题。下列年份中,清洁能源机组上网电量占当年并网机组总上网电量比重最高的是:
计算机网络最突出的优点是
最新回复
(
0
)