首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
admin
2017-02-24
96
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数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全国计算机二级
相关试题推荐
若x=10010111,则表达式(3+(int)(x))&(~3)的运算结果是()。
下列程序的输出结果是()。#include<stdio.h>main(){iuta=2,b=3,p;p=f(a,B)printf("%d",p);}intf(a,b){intc;if(a>B)c=1;e1Seif(a==
下列选项中不属于结构化程序设计方法的是()。
已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
以下叙述中错误的是
下列有关数据库的描述,正确的是
已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是
以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。#includestructlist{intd
若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是
下列函数的运行结果是main(){inti=2,p;intj,k;j=i;k=++i;p=f(j,k);printf("%d",p);}intf(inta,intb){intc;if(a>b
随机试题
A.快速、精确而短暂B.快速、粗糙而广泛C.缓慢、持久而弥散D.缓慢、迟钝而局限E.相对局限和不灵敏自身调节的一般特点是
甲减患者使用左甲状腺素治疗时应用原则是
护理业务管理包括()
中国A公司与德国B公司因双方合同中仲裁条款的效力问题在我国涉诉。双方在合同中约定仲裁机构为位于巴黎的国际商会仲裁院,仲裁地为斯德哥尔摩,但对该仲裁条款应适用的法律未作约定。依我国现行司法解释,我国法院审查该仲裁条款效力时,应适用下列哪国的法律?()
下列选项中,属于建安工程费用中施工机械使用费的有()。
王某经营了一家金属加工厂,因其流动资金短缺便以个人名义向赵某借款50万元。双方约定分2次借款,第一笔借款20万元,间隔1个月再借款30万元,两笔借款还款期限均为2个月,双方未明确借款利息。赵某向王某借出20万元后,并未按照约定时间再借给王某30万元,使王某
(2一)7的二项展开式中,不含x3的项的系数的和为().
当代世界教育发展的一般趋势是()
(1)在重庆打黑风暴中李庄作为涉黑嫌疑犯龚刚模的辩护律师以涉嫌做伪证罪被逮捕审判。这个案件从审理到判决的过程涉及四个问题值得我们关注:①在刑事诉讼中,为了保障被告的合法权益,被告需要律师为其做无罪辩护,但是在这个案件中,我们看到律师作为参与方也需
一个学生可以选不同课程,很多学生可以选同一门课程,则课程与学生这两个实体之间的联系是______。
最新回复
(
0
)