首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
admin
2017-02-24
33
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数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全国计算机二级
相关试题推荐
下列软件系统结构图的宽度为______。
下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;<n;j++)i
下列字符数组初始化语句中,不正确的是()。
设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是
关于结构化程序设计原则和方法描述错误的是()。
有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i;fprintf(f
有以下程序#include<stdio.h>main(){intc;while((c=getchar())!=’\n’){switch(c-’2’){case0:case1:pu
若执行下面的程序时,从键盘输入5和2,则输出结果是main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("
以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。main(){intx[10],a[9],I;for(I=0;I
有以下程序intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是
随机试题
A.根尖孔B.侧支根管C.分叉区副根管D.牙本质小管E.畸形舌侧沟牙周刮治后可能会造成牙髓的反应性改变,通过的主要途径是
采用二灰碎石作路面底基层时应验算层底拉应力。()
这起事故构成()。《安全生产法》规定:两个以上生产经营单位在同一作业区域内进行可能危及对方安全生产活动,未签订()或者未指定()的,责令限期改正,逾期未改正的,责令停产停业。
下列各项中,应计入坏账准备贷方的是()。
《中华人民共和国旅游法》由全国人民代表大会常务委员会于2013年4月25日通过,自2013年11月1日起生效。()
认真阅读《邹忌讽齐王纳谏》课堂教学实录节选,回答下列问题。生:(读课文)“臣之妻私臣,臣之妾畏臣,臣之客欲有求与臣,皆以美于徐公”:“宫妇左右莫不私王,朝廷之臣莫不畏王,四境之内莫不有求于王。”师:这两组句子,相同的词语是:“私、畏、有
某公司实行人性化管理。公司领导表示,所有30岁以下的年轻人如果还没有女朋友,则一律不用加班,抓紧时间去找女朋友;领导还表示,公司所有30岁以上的员工如果有了女朋友,也一律不用加班,因为要抓紧时间好好陪陪女朋友,创造条件尽快结婚。根据公司领导的表示,可以得出
由于真实或想象的他人的影响而改变行为,我们称这种现象为()。
有以下程序#includeintfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的输出结果是
Whatdoesthemanwanttodo?
最新回复
(
0
)