首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指
admin
2017-02-24
39
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#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】
)j
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;i<N一1;i++)
for(j=i+1;j<N;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);
}
main()
{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<N;j++)
{printf("\nNo:%id Name:%一8s
Scores:",t[J].sno,t[j].name);
for(i=0;i<3;i++)
printf("%6.2 f",t[j].score
);
printf("\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<N;j++)
{printf("\nNo:%ld Name:%-8s Scores:",ss[j].sno,ss[j].name);
for(i=0;i<3;i++)
printf("%6.2 f",ss[j].scoEe
);
printf("\n");
}
}
选项
答案
(1)"rb" (2)> (3)fwrite
解析
填空1:题目中要求从形参filename所指的文件中读入学生的数据,以此可以看出本空应该填写"rb"。
填空2:此处的if语句是比较学号的大小,如果学号大就和学号小的换位,以此本空填写>。
填空3:题目要求所有的学生数据均以二进制方式输出到文件中,因此本空填写fwrite。
转载请注明原文地址:https://kaotiyun.com/show/iMDp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下列程序的输出结果是()。#include<stdio.h>voidp(int*x){printf("%d",++*x);}voidmain(){inty=3;p(&y);}
在数据库设计中,将E-R图转换为关系模式的过程属于()。
有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
请选出正确的程序段
已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
下列程序的输出结果是#include"stdio.h"#defineN3#defineM3voidfun(inta[M][N]){printf("%d\n",*(a[1]+2));}main(){inta
设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是
函数的值通过return语句返回,下面关于return语句的形式描述错误的是
若变量均已正确定义并赋值,以下合法的C语言赋值语句是
随机试题
在借贷记账法下,“借”表示增加,“贷”表示减少。()
患者,男,43岁,急性腹膜炎术后4天出现体温升高、下腹坠胀,有里急后重感,B超检查显示盆腔有较大的脓肿,此时最有效的治疗方式是
女,35岁。因月经过多且经期延长,贫血,血红蛋白仅56g/L,而决定行全子宫切除术。术前主刀医师在考虑手术各步注意事项时,下列哪项可不必顾虑
按照泵的作用原理分类,属于动力式泵的有()。
对于卧式或立式离心泵、混流泵机组,当进水池水位(或水源水位)变幅大于H效吸,且泵房地基承载力较低或地下水位较高时可建()。
某投资者准备购买一套办公用房,有三个付款方案可供选择:(1)甲方案:从现在起每年年初付款10万元,连续支付5年,共计50万元;(2)乙方案:从第3年起,每年年初付款12万元,连续支付5年,共计60万元;(3)丙方案:从现在起每年年末付款1
设随机事件A与B互不相容,则()
已知一条抛物线通过x轴上两点A(1,0),8(3,0),求证:两坐标轴与该抛物线所围成的面积等于x轴与该抛物线所围成的面积.
为了防止一个用户的工作不适当地影响另一个用户,应该采取
自定义的异常类可从()类继承。
最新回复
(
0
)