首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下划线处
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下划线处
admin
2019-09-02
51
问题
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参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,STU n)
{FILE*fp;
/**********found**********/
fp=fopen(___1___,"rb+");
/**********found**********/
fseek(___2___,-(long)sizeof(STU),SEEK_END);
/**********found**********/
fwrite(&n, sizeof(STU), 1,___3___);
fclose(fp);
}
main()
{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}};
STU n={10006,"ZhaoSi",55,70,68},ss[N];
int i,j;FILE*fp;
fp=fopen("student.dat","wb");
fwrite(t,sizeof(STU),N,fp);
fclose(fp);
fp=fopen("student.dat","rb");
fread(ss,Sizeof(STU),N,fp);
fclose(fp);
printf("\nThe original data:\n\n");
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.2f",ss[j].score
);
printf("\n");
}
fun("student.dat",n);
printf("\nThe data after modifing:\n\n");
fp=fopen("student.dat","rb");
fread(ss,sizeof(STU),N,fp);
fclose(fp);
for(j=0;j<N;j++)
fprintf("\nNo:%ld Name:%-8s scores:",ss[j].sno,ss[j].name);
for(i=0;i<3; i++) printf("%6.2f",ss [j].score
);
printf("\n");
}
}
选项
答案
(1)filename (2)fp (3)fp
解析
本题中函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,本题主要考察文件的读写。
第一空:“fp=fopen(___1___,"rb+");”补充fopen的参数,fopen的调用形式是:fp=fopen(文件名,文件使用方式),因此,第一空处应填文件名“filename”。
第二空:此处是补充fseek函数的参数,fseek的调用形式是:fseek(fp,offset,position),其中,第一个参数是文件型指针,故第二空处应填文件型指针变量“fp”。
第三空:fwrite的调用形式是(buffer,size,count,fp),最后一个参数是文件型指针,故第三空处应填“fp”,将新的学生数据写在最后一个学生数据位置。
转载请注明原文地址:https://www.kaotiyun.com/show/sKRp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为
按照C语言规定的用户标识符命名规则,不能出现在标识符中的是
有以下程序#includevoidf(int*p,int*q);main(){intm=1,n=2,*r=&m;f(r,&n);printf("%d,%d",m,n);}voidf(int*p,int*q){p=
在软件开发中,需求分析阶段产生的主要文档是
若有以下程序,编译时出现错误,你认为出错的是#includemain(){inta=0,b=0,c=0,d;c=(a+=b,,b+=A)/*第4行*/d=c;;/*第5行*/;/*第6行*/printf("%d,%d,%d\n",a,b
以下选项中非法的C语言字符常量是
若k是int类型变量,且有以下for语句1for(k=-1;k<0;k++)printf("*\n");下面关于语句执行情况的叙述中正确的是
若要求从键盘读入含有空格字符的字符串,应使用函数
软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于
随机试题
使足内翻的肌有①___________________和②___________________,使足外翻的主要肌是③___________________、④___________________和⑤___________________。
男性,35岁,头晕乏力,牙龈及鼻出血10天,骨髓增生明显到极度活跃,原始细胞占75%,POX染色阳性和强阳性。PAS染色阴性,NSE染色部分阳性,不被NaF抑制,诊断为急性白血病,最可能的FAB类型是
女,40岁。双前臂屈侧出现皮疹半年,伴瘙痒。体检:双前臂屈侧可见散在红色、紫红色多角形扁平丘疹,表面覆白色角质薄膜,有蜡样光泽,口腔黏膜可见乳白色网状条纹。最可能的诊断是
患者,女,60岁。左上7残根,有冠心病史,近2年来未发作,测血压21.3~12.1kPa(160/90mmHg),在拔除左上7时麻醉首选药是
在火灾中,由于毒性造成人员伤亡的罪魁祸首是(),火灾中约有一半的人员死亡是由它造成的,另一半由直接烧伤、爆炸压力及其他有毒气体引起。
背景某支线机场航站楼施工任务采取工程总承包,经过公开招投标,某建筑工程公司获得工程任务,但航站楼弱电工程的分包是由业主指定的。工程顺利开始土建、安装、装修等施工,但弱电工程施工单位却迟迟不能按照总包单位的要求进场,并认为是与业主签订合同,可以不服从总包单
统计报告实用性的前提条件是()。
债权人可以申报附条件、附期限的债权。()
下列程序段的运行结果是()。Subsele()DimnAsIntegeri=21:n=3DoWhilei>ni=i—nLoopPrintiEndSub
Hedidn’tthinkthatthenewswastrue,____?
最新回复
(
0
)