资源描述:
《2017年全国计算机等级考试C语言上机考试题库--1-20套》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2017年全国计算机等级考试C语言上机考试题库学生练习用第一套至第二十套第一套:1、程序填空程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!------------------------------------
2、-----------------------------------------------------------------------------#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;/**********found**********/fp=fopen(__1__,"rb+");/**********found**********
3、/fseek(__2__,-(long)sizeof(STU),SEEK_END);/**********found**********/fwrite(&n,sizeof(STU),1,__3__);fclose(fp);}main(){STUt[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}};STUn={10006,"Z
4、haoSi",55,70,68},ss[N];inti,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("Theoriginaldata:");for(j=0;j5、e);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("");}fun("student.dat",n);printf("Thedataaftermodifing:");fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j6、i++)printf("%6.2f",ss[j].score[i]);printf("");}}-----------------------------------------------------------------------------------------------------------------【参考答案】(1)filename (2)fp (3)fp【解题思路】填空1:本空是对文本文件的打开,filename所指的文件中的最后数据要进行重写,因此首先是要打开,因而本空填写filename。填空2:fseek
7、功能是重定位流上的文件指针。用法: int fseek(FILE *stream, long offset, int fromwhere);本空应该填写fp。填空3:因为题目中要对所有学生数据均以二进制方式输出到文件中,因此本空填写fp。知识点讲解:函数名:fseek功 能:重定位流上的文件指针。用 法:int fseek(FILE *stream, long offset, int fromwhere)。描 述:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执
8、行失败(比如offset超过文件自身大小),则不改变stream指向的位置。返回值:成功,返回0;否则返回非0值。2、程序改错下列给定程序中函数Cre