首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下画线处
admin
2017-02-24
38
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数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://jikaoti.com/ti/P1i0FFFM
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
在数据库系统中,实现各种数据管理功能的核心软件称为______。
已知i、j、k为血型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。
结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法。
mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){intifor(i=0;______!=’\0’;i++);return(i);}
有以下程序#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<string.h>main(){charp[20]={’a’,’b’,’c’,’d’},q[]="abc",r[]="abcde";strcat(p,r);strcpy(p+strlen(q),
设有如下三个关系表下列操作中正确的是
以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。#includestructlist{intd
设有如下定义:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正确的赋值语句是
有以下程序intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是
随机试题
下列说法正确的有()
遗尿经常发生于
A.慢性龋B.急性龋C.静止龋D.口干性龋E.放射性龋因头颈部放疗导致的猛性龋称为()
有一根三跨的钢筋混凝土等截面连续梁,q=p+g=25kN/m(设计值)如图所示。混凝土强度等级为C30,梁纵向受力钢筋采用HRB335钢,纵向受力钢筋合力点至截面近边的距离as=35mm,梁截面b×h=200mm×500mm。假定该连续梁的B、C支
地理信息管理系统中,应急预案包括()。
2×16年1月1日,甲公司以银行存款3000万元取得乙公司60%的股权,能够对乙公司实施控制;当日,乙公司可辨认净资产公允价值为4500万元(与账面价值相同)。2×17年10月1日,乙公司向非关联方丙公司定向增发新股,增资2700万元,相关手续于当日完成。
()是一个教师是否成熟的重要标志。
关于确定一项突击性任务的人选,甲、乙、丙三位推荐人的意见分别是:甲:不是选派小张,就是选派小王。乙:如果不选派小张,就不选派小王。丙:只要不选派小王,就不选派小张。以下几项中:同时满足甲、乙、丙三人意见的方案是(
Thecollapseofbeliefwehavebeenwitnessingthroughoutthetwentiethcenturycomeswithglobalism.Thepostmodernconditioni
A、Shy.B、Meticulous.C、Outgoing.D、Studious.C
最新回复
(
0
)