首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
admin
2017-02-24
100
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<Stdio.H>
2 #define N 5
3 typedef struct student {
4 long sno;
5 char name[10];
6 float score[3];
7 }STU;
8 void fun(char*filename,STU n)
9 {FILE*fp;
10 /*********found*********/
11 fp=fopen(
【1】
,"rb+");
12 /*********found*********/
13 fseek(
【2】
,-(long)sizeof(STU),SEEK END);
14 /*********found*********/
15 fwrite(&n,sizeof(STU),1,
【3】
);
16 fclose(fP);
17 }
18 main()
19 {STU t[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78),{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88)};
20 STU n={10006,"ZhaoSi",55,70,68},SS[N];
21 int i,j; FILE*fP;
22 fp=fopen("student.dat","wb");
23 fwrite(t,sizeof(STU),N,fp);
24 fclose(fp);
25 fp=fopen("student.da","rb");
26 freacl(ss,sizeof(STU),N,fp);
27 fclose(fp);
28 print;f("\nThe original data:\n\n");
29 for(j=0;j<N;j++)
30 {printf("\nNo:%ld Name:%一8s Scores:",ss[j].sno,ss[j].name);
31 for(i=0;i<3;i++)
32 printf("%6.2f",ss[j].score
);
33 printf("\n");
34 }
35 fun("student.dat",n);
36 printf("\nThe data after modif-ing:\n\n");
37 fp=fopen("student.dat","rb");
38 fread(ss,Sizeof(STU),N,fp);
39 fclose(fp);
40 for(j=0;j<N;j++)
41 {printf("\nNo:%ld Name:%-8s Scores:",ss[j].sno,ss[j].name);
42 for(i=0;i<3;i++)
43 printf("%6.2f",ss[j].score
);
44 printf("\n");
45 }
46 }
选项
答案
(1)filename (2)fp (3)fp
解析
填空1:本空是对文本文件的打开,filename所指的文件中的最后数据要进行重写,因此首先是要打开,因而本空填写filename。
填空2:fseek功能是重定位流上的文件指针。
用法:int fseek(FILE*stream,long offset,int from where);本空应该填写fp。
填空3:因为题目中要对所有学生数据均以二进制方式输出到文件中,因此本空填写fp。
知识点讲解:
函数名:fseek
功能:重定位流上的文件指针。
用法:int fseek(FILE*stream,long offset,int fromwhere)。
描述:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准(从文件的哪里开始偏移)、偏移offset个字节的位置。正数表示正向偏移,负数表示负向偏移。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值:成功,返回0;否则返回非0值。
转载请注明原文地址:https://kaotiyun.com/show/wMDp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下列软件系统结构图的宽度为______。
若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。
已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。
关于结构化程序设计原则和方法描述错误的是()。
下面程序段的运行结果是chara[]="lanuage",*p;p=a;while(*p!=’u’){printf("%c",*p-32);p++;}
请选出正确的程序段
C语言规定,在一个源程序中,main函数的位置
函数的值通过return语句返回,下面关于return语句的形式描述错误的是
下列关于字符串的说法中错误的是
随机试题
鲁迅大量运用象征、隐喻手法创作的作品是()
A.各种消化酶分泌少、活性低B.肠绒毛被破坏,肠道水电解质吸收减少C.cAMP、cGMP生成增多,肠道分泌增加D.肠动力增E.细菌侵袭肠黏膜男,8个月,11月份发病,发热、呕吐、腹泻,大便每日7~10次,为蛋花汤样,无腥臭味,便显微镜检未见红白
细胞的有丝分裂和减数分裂都可能产生可遗传的变异,其中仅发生在减数分裂过程的变异是()。
高中一年级入学开始,班主任王老师通过各种渠道,深入了解班级每个学生的情况,并据此制定个人三年发展规划,这种做法标明王老师关注()。
有两个三口之家一起出行去旅游,他们被安排坐在两排相对的座位上,每排有3个座位,小孩只能安排在靠窗或过道的位置,一共有多少种坐法?()
Everyyeartelevisionstationsreceivehundredsofcomplaintsabouttheloudnessofadvertisements.However,federalrulesforbi
阅读下列代码段,选出该代码段的正确的文件名()classA{voidmethodl(){System.out.println("methodlinclassA");}}publicclassB{
在窗体上画一个通用对话框,其名称为CommonDialog1,则下列与CommonDialog1.ShowOpen方法等效的语句是______。
A、 B、 C、 D、 C数据库系统(DBS)由数据库(DB)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台5个部分组成,可见DB和DBMS都是DBS的组成部分。
Itwastheworsttragedyin【C1】________history,sixtimesmoredeadlythantheTitanic.WhentheGermancruiseshipWilhelm
最新回复
(
0
)