任务42:文件的读写 《编程语言-C语言》45分钟专题训练

| 2份
| 29页
| 127人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目九: 文件 第42卷: 文件的读写 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列选项中,对C语言中文件的存取方式,叙述正确的一项是( ) A.只能顺序存取 B.只能随机存取 C.只能从头文件开头存取 D.既可以顺序存取,又可以随机存取 2.调用fopen()函数时,如果发生错误,则函数的返回值为( ) A.NULL B.地址值 C.1 D.EOF 3.调用fopen()函数时,不需要的信息是( ) A.需要进行打开的文件名 B.文件的大小 C.文件指针 D.文件的打开方式 4.已知:FILE *fp;fp=fopen("f1","w");,则下列选项中对文件f1操作的选项中,正确的一项是( ) A.写操作结束后可以从头开始读 B.只能写不能读 C.文件f1必须存在 D.可以随意读写 5.下列叙述中,正确的一项是( ) A.C语言中的文件是流式文件,因此只能顺序存取数据 B.对于缓冲文件系统,程序中每执行一条读写语句都会访问一次磁盘文件 C.对文件进行了写操作后,必须先关闭该文件,然后再打开,才能读到第1个数据 D.文件操作完成后,必须将文件关闭,否则可能丢失数据 6.设文件指针fp已经指向“文件结束”处,则函数feof(fp)的值可能是( ) A.Ture B.Flase C.0 D.1 7. 若文件12.txt中原有内容为“I come Hunan,”,运行以下程序后,文件“12.txt”文件中的内容为( ) main() {FILE *fp; fp=fopen("12.txt","a"); fprintf(fp,"I am a student!"); fclose(fp);getch();} A.I come Hunan, B.I am a student! C.I come Hunan,I am a student! D.I am a student!I come Hunan, 8.设文件12.txt已经存在,且有如下程序段,则该程序段实现的功能是( ) main() {FILE *fp; fp=fopen("12.txt","r"); while(!feof(fp)) putchar(fgetc(fp)); fclose(fp);getch();} A.将文件12.txt的内容输出到屏幕上 B.将文件12.txt的内容输出到另一个文件中 C.将文件12.txt的第一个字符输出到屏幕上 D.将文件12.txt的内容删除 9.下列选项中,正确调用fscanf()函数的格式为( ) A.fscanf(文件名,格式控制字符串,输入项地址列表); B.fscanf(文件指针,输入项地址列表,格式控制字符串); C.fscanf(格式控制字符串,文件指针,输入项地址列表); D.fscanf(文件指针,格式控制字符串,输入项地址列表); 10.下列选项中,不属于文件标识三部分的是( ) A.文件路径 B.文件名主干 C.文件后缀 D.文件内容 11.下列选项中,对于文件后缀名所对应的文件性质,叙述不正确的一项是( ) A.txt(文本文件) B.dat(数据文件) C.obj(C语言源程序文件) D.exe(可执行文件) 12.下列有关文件打开方式的叙述中,不正确的一项是( ) A.用"r"方式打开文件时只能向文件写数据 B.用"w"方式打开文件时,只能向文件写数据,且该文件可以不存在 C.用"a"方式打开文件时,可以向文本文件尾部添加数据 D.用"rb"方式打开文件时,只能读该文件的内容,且文件要求为二进制文件 13.下列选项中,正确调用fseek()函数的形式是( ) A.fseek(文件指针,起始点,位移量); B.fseek(文件指针,位移量,起始点); C.fseek(位移量,文件指针,起始点); D.fseek(起始点,位移量,文件指针); 14.若要将存放在双精度型数据b[10]中的10个双精度数写入文件指针fp指向的文件中,下列选项中,正确的语句是( ) A.for(i=0;i<10;i++) fputc(b[i],fp); B.for(i=0;i<10;i++) fputc(&b[i],fp); C.for(i=0;i<10;i++) fputc(&b[i],sizeof(double),1,fp); D.fwrite(fp,sizeof(double),10,b); 15.下列选项中,叙述不正确的一项是( ) A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B.在程序结束时,应该使用fclose函数关闭已打开的文件 C.在使用fread函数从二进制文件中读取数据时,可以使用数组名给数组中的所有元素读入数据 D.不可以使用FILE定义指向二进制文件的文件指针 16.若以“a+”的方式打开一个已经存在的文件,则下列叙述中,正确的一项是( ) A.文件打开时,原有文件内容被删除,只可做写操作 B.文件打开时,原有文件内容不被删除,位置指针移动到文件开头,可做重写和读操作 C.文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,可做添加和读操作 D.文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,只可做读操作 17.若要打开D盘上的user子目录下名为12.txt的文本文件进行读写操作,则以下函数参数调用正确的是( ) A.fopen("D:\user\12.txt", "r"); B.fopen("D:\\user\\12.txt","r"); C.fopen("D:\\user\\12.txt","rb"); D.fopen("D:\\user\\12.txt","w"); 18.函数:fgets(str,n,fp)从文件中读入一个字符串,以下叙述中,正确的一项是( ) A.字符串读入后不会自动加入'\0' B.fp是file类型的指针 C.fgets函数将从文件中对多读入n-1个字符 D.fgets函数将从文件中最多读入n个字符 19.已知函数fread( )的调用形式为:fread(buffer,size,count,fp),其中buffer代表的是( ) A.存入读入数据项的存储区 B.一个指向所读文件的文件指针 C.存放读入数据的地址或指向此地址的指针 D.一个整型变量,代表要读入的数据项总数 20.下列程序的功能是把从终端读入的10个整数以二进制的方式写到一个名为“12.dat”的新文件中,请你为第【1】空选择填入合适的内容。( ) #include <stdio.h> FILE *fp; main() {int i,j; if((fp=fopen(【1】))==NULL)exit(0); for(i=0;i<10;i++) {scanf("%d",&j); fwrite(【2】);} fclose(fp);getch();} A. "bi.dat","w" B."bi.dat","wb" C. "bi.dat","r" D. "bi.dat","rb" 21.下列程序的功能是把从终端读入的10个整数以二进制的方式写到一个名为“12.dat”的新文件中,请你为第【2】空选择填入合适的内容。( ) #include <stdio.h> FILE *fp; main() {int i,j; if((fp=fopen(【1】))==NULL)exit(0); for(i=0;i<10;i++) {scanf("%d",&j); fwrite(【2】);} fclose(fp);getch();} A.j,sizeof(int),1,fp B.&j,sizeof(int),1,*fp C.&j,sizeof(int),1,fp D.j,sizeof(int),1,*fp 22.下列程序的功能是接收由终端输入的字符,存放到文件中,用“#”结束输入,请你为第【1】空选择填入合适的内容。( ) main() {FILE *fp; char ch,filename[10]; printf(" 输入文件名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) {printf("cannot open file! "); exit(0);} printf(" 输入字符序列直到‘#’为止."); while(【1】) fputc(【2】); fclose(fp);getch();} A. (ch=getchar)!='#' B. (ch=getchar())=='#' C. ch=getchar()!='#' D.(ch=getchar())!='#' 23. 下列程序的功能是接收由终端输入的字符,存放到文件中,用“#”结束输入,请你为第【2】空选择填入合适的内容。( ) main() {FILE *fp; char ch,filename[10]; printf(" 输入文件名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) {printf("cannot open file! "); exit(0);} printf(" 输入字符序列直到‘#’为止."); while(【1】) fputc(【2】); fclose(fp);getch();} A.ch,fp B.ch C.fp D.ch,*fp 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.设文件能够正常打开,则执行以下程序后,12.txt文件的内容是( ) main() {FILE *fp; char *s1="Fortran",*s2="Basic"; if((fp=fopen("12.txt","wb"))==NULL) {printf("Can't open 12.txt file "); exit(0);} fwrite(s1,7,1,fp); fseek(fp,0L,SEEK_SET); fwrite(s2,5,1,fp); fclose(fp); getch();} 25.以下程序的运行结果是( ) main() {FILE *fp; int i=20,j=30,k,n; fp=fopen("12.dat","w"); fprintf(fp,"%d ",i); fprintf(fp,"%d ",j); fclose(fp); fp=fopen("12.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d %d ",k,n); fclose(fp); getch();} 26.以下程序的运行结果是( ) main() {FILE *fp; char a[20],b[20]="123456789abcdef"; fp=fopen("fa.txt","w"); fputs(b,fp); fputs("ABCD012345",fp); fclose(fp); fp=fopen("fa.txt","r"); fgets(a,10,fp); puts(a); fgets(b,20,fp); puts(b); fclose(fp); getch();} 27.以下程序的运行结果是( ) main() {FILE *fp; float i=7.29,k; fp=fopen("fb.dat","wb"); fprintf(fp,"%8.1f",i); fprintf(fp,"%8.1f",12.36); fclose(fp); fp=fopen("fb.dat","rb"); fscanf(fp,"%f%f",&i,&k); printf("i=%f k=%f ",i,k); fclose(fp); getch();} 28.以下程序的运行结果是( ) main() {FILE *fp; float a[6]={15.2,24.1,65.4,1.71,51.6,55}; int i,k; float dat[100]; fp=fopen("fc.dat","wb"); if(fp==NULL) {printf("can't open file!"); exit(1);} fwrite(a,sizeof(float),6,fp); fclose(fp); fp=fopen("fc.dat","rb"); if(fp==NULL) {printf("can't open file!"); exit(1);} k=fread(dat,sizeof(float),100,fp); for(i=0;i<k;i++) printf("%7.2f",dat[i]); fclose(fp); getch();} 29.设a1.txt和a2.txt文件的内容分别是123!和456!,则执行以下程序段的输出结果是( ) void f(FILE *p) {char c; while((c=fgetc(p))!='!') putchar(c);} main() {FILE *fp; fp=fopen("a1.txt","r"); f(fp); fclose(fp); fp=fopen("a2.txt","r"); f(fp); fclose(fp); putchar(' '); getch();} 30.运行以下程序,文件f2.txt中的内容是( ) #include <stdio.h> #include<string.h> #include <conio.h> void f(char fname[ ],char ch[ ]) {FILE *fp; int i; fp=fopen(fname,"a"); for(i=0;i<strlen(ch);i++) fputc(ch[i],fp); fclose(fp);} main() {f("f2.txt","very"); f("f2.txt","good"); getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:从键盘输入一些字符,并逐个将这些字符写入磁盘中,直到用户输入一个“#”为止。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include <stdlib.h> L3 #include <conio.h> L4 main() L5 {file *fp; L6 char ch,filename[10]; L7 printf("请输入所用的文件名: "); L8 scanf("%s",filename); L9 getchar(); L10 if((fp=fopen(filename,"rb"))==NULL) L11 {printf("cannot open file "); L12 exit(0);} L13 printf("请输入一个准备存储到磁盘的字符串(以#结束): "); L14 ch=getchar(); L15 while(ch=='#') L16 {fputc(ch,fp); L17 putchar(ch); L18 ch=getchar();} L19 getch();} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:将一个磁盘文件中的信息复制到另一个磁盘文件中。请填空。 #include <stdio.h> #include <stdlib.h> #include <conio.h> main() {FILE *in,*out; char ch,infile[10],outfile[10]; printf("输入读入文件的名字: "); scanf("%s",infile); printf("输入输出文件的名字: "); scanf("%s",outfile); if((in=【1】)==NULL) {printf("无法打开此文件 "); exit(0);} if((out=【2】)==NULL) {printf("无法打开此文件 "); exit(0);} ch=fgetc(in); while(【3】) {fputc(ch,out); putchar(ch); ch=fgetc(in);} putchar(10); fclose(in); 【4】; getch();} 33.下列程序的功能是:从键盘读入若干个字符串,对它们按照字母大小的顺序,然后把排好序的字符串送到磁盘文件中保存。请填空。 #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> main() {FILE *fp; char str[3][10],temp[10]; int i,j,k,n=3; printf("Enter strings: "); for(i=0;i<n;i++) gets(str[i]); for(i=0;【1】;i++) {k=i; for(j=i+1;j<n;j++) if(【2】) k=j; if(k!=i) {strcpy(temp,str[i]); strcpy(str[i],str[k]); 【3】;}} if((fp=fopen("D:\\123\\12.txt","【4】"))==NULL) {printf("can't open file! "); exit(0);} printf(" The new sequence: "); for(i=0;i<n;i++) {fputs(str[i],fp); fputs(" ",fp); printf("%s ",str[i]);} getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目九: 文件 第42卷: 文件的读写 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列选项中,对C语言中文件的存取方式,叙述正确的一项是( ) A.只能顺序存取 B.只能随机存取 C.只能从头文件开头存取 D.既可以顺序存取,又可以随机存取 【答案】D 2.调用fopen()函数时,如果发生错误,则函数的返回值为( ) A.NULL B.地址值 C.1 D.EOF 【答案】A 3.调用fopen()函数时,不需要的信息是( ) A.需要进行打开的文件名 B.文件的大小 C.文件指针 D.文件的打开方式 【答案】B 4.已知:FILE *fp;fp=fopen("f1","w");,则下列选项中对文件f1操作的选项中,正确的一项是( ) A.写操作结束后可以从头开始读 B.只能写不能读 C.文件f1必须存在 D.可以随意读写 【答案】B 5.下列叙述中,正确的一项是( ) A.C语言中的文件是流式文件,因此只能顺序存取数据 B.对于缓冲文件系统,程序中每执行一条读写语句都会访问一次磁盘文件 C.对文件进行了写操作后,必须先关闭该文件,然后再打开,才能读到第1个数据 D.文件操作完成后,必须将文件关闭,否则可能丢失数据 【答案】D 6.设文件指针fp已经指向“文件结束”处,则函数feof(fp)的值可能是( ) A.Ture B.Flase C.0 D.1 【答案】D 7. 若文件12.txt中原有内容为“I come Hunan,”,运行以下程序后,文件“12.txt”文件中的内容为( ) main() {FILE *fp; fp=fopen("12.txt","a"); fprintf(fp,"I am a student!"); fclose(fp);getch();} A.I come Hunan, B.I am a student! C.I come Hunan,I am a student! D.I am a student!I come Hunan, 【答案】C 8.设文件12.txt已经存在,且有如下程序段,则该程序段实现的功能是( ) main() {FILE *fp; fp=fopen("12.txt","r"); while(!feof(fp)) putchar(fgetc(fp)); fclose(fp);getch();} A.将文件12.txt的内容输出到屏幕上 B.将文件12.txt的内容输出到另一个文件中 C.将文件12.txt的第一个字符输出到屏幕上 D.将文件12.txt的内容删除 【答案】A 9.下列选项中,正确调用fscanf()函数的格式为( ) A.fscanf(文件名,格式控制字符串,输入项地址列表); B.fscanf(文件指针,输入项地址列表,格式控制字符串); C.fscanf(格式控制字符串,文件指针,输入项地址列表); D.fscanf(文件指针,格式控制字符串,输入项地址列表); 【答案】D 10.下列选项中,不属于文件标识三部分的是( ) A.文件路径 B.文件名主干 C.文件后缀 D.文件内容 【答案】D 11.下列选项中,对于文件后缀名所对应的文件性质,叙述不正确的一项是( ) A.txt(文本文件) B.dat(数据文件) C.obj(C语言源程序文件) D.exe(可执行文件) 【答案】C。obj(目标文件)。 12.下列有关文件打开方式的叙述中,不正确的一项是( ) A.用"r"方式打开文件时只能向文件写数据 B.用"w"方式打开文件时,只能向文件写数据,且该文件可以不存在 C.用"a"方式打开文件时,可以向文本文件尾部添加数据 D.用"rb"方式打开文件时,只能读该文件的内容,且文件要求为二进制文件 【答案】A 13.下列选项中,正确调用fseek()函数的形式是( ) A.fseek(文件指针,起始点,位移量); B.fseek(文件指针,位移量,起始点); C.fseek(位移量,文件指针,起始点); D.fseek(起始点,位移量,文件指针); 【答案】B 14.若要将存放在双精度型数据b[10]中的10个双精度数写入文件指针fp指向的文件中,下列选项中,正确的语句是( ) A.for(i=0;i<10;i++) fputc(b[i],fp); B.for(i=0;i<10;i++) fputc(&b[i],fp); C.for(i=0;i<10;i++) fputc(&b[i],sizeof(double),1,fp); D.fwrite(fp,sizeof(double),10,b); 【答案】C 15.下列选项中,叙述不正确的一项是( ) A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B.在程序结束时,应该使用fclose函数关闭已打开的文件 C.在使用fread函数从二进制文件中读取数据时,可以使用数组名给数组中的所有元素读入数据 D.不可以使用FILE定义指向二进制文件的文件指针 【答案】D 16.若以“a+”的方式打开一个已经存在的文件,则下列叙述中,正确的一项是( ) A.文件打开时,原有文件内容被删除,只可做写操作 B.文件打开时,原有文件内容不被删除,位置指针移动到文件开头,可做重写和读操作 C.文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,可做添加和读操作 D.文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,只可做读操作 【答案】C 17.若要打开D盘上的user子目录下名为12.txt的文本文件进行读写操作,则以下函数参数调用正确的是( ) A.fopen("D:\user\12.txt", "r"); B.fopen("D:\\user\\12.txt","r"); C.fopen("D:\\user\\12.txt","rb"); D.fopen("D:\\user\\12.txt","w"); 【答案】B 18.函数:fgets(str,n,fp)从文件中读入一个字符串,以下叙述中,正确的一项是( ) A.字符串读入后不会自动加入'\0' B.fp是file类型的指针 C.fgets函数将从文件中对多读入n-1个字符 D.fgets函数将从文件中最多读入n个字符 【答案】C 19.已知函数fread( )的调用形式为:fread(buffer,size,count,fp),其中buffer代表的是( ) A.存入读入数据项的存储区 B.一个指向所读文件的文件指针 C.存放读入数据的地址或指向此地址的指针 D.一个整型变量,代表要读入的数据项总数 【答案】C 20.下列程序的功能是把从终端读入的10个整数以二进制的方式写到一个名为“12.dat”的新文件中,请你为第【1】空选择填入合适的内容。( ) #include <stdio.h> FILE *fp; main() {int i,j; if((fp=fopen(【1】))==NULL)exit(0); for(i=0;i<10;i++) {scanf("%d",&j); fwrite(【2】);} fclose(fp);getch();} A. "bi.dat","w" B."bi.dat","wb" C. "bi.dat","r" D. "bi.dat","rb" 【答案】B 21.下列程序的功能是把从终端读入的10个整数以二进制的方式写到一个名为“12.dat”的新文件中,请你为第【2】空选择填入合适的内容。( ) #include <stdio.h> FILE *fp; main() {int i,j; if((fp=fopen(【1】))==NULL)exit(0); for(i=0;i<10;i++) {scanf("%d",&j); fwrite(【2】);} fclose(fp);getch();} A.j,sizeof(int),1,fp B.&j,sizeof(int),1,*fp C.&j,sizeof(int),1,fp D.j,sizeof(int),1,*fp 【答案】C 22.下列程序的功能是接收由终端输入的字符,存放到文件中,用“#”结束输入,请你为第【1】空选择填入合适的内容。( ) main() {FILE *fp; char ch,filename[10]; printf(" 输入文件名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) {printf("cannot open file! "); exit(0);} printf(" 输入字符序列直到‘#’为止."); while(【1】) fputc(【2】); fclose(fp);getch();} A. (ch=getchar)!='#' B. (ch=getchar())=='#' C. ch=getchar()!='#' D.(ch=getchar())!='#' 【答案】D 23. 下列程序的功能是接收由终端输入的字符,存放到文件中,用“#”结束输入,请你为第【2】空选择填入合适的内容。( ) main() {FILE *fp; char ch,filename[10]; printf(" 输入文件名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) {printf("cannot open file! "); exit(0);} printf(" 输入字符序列直到‘#’为止."); while(【1】) fputc(【2】); fclose(fp);getch();} A.ch,fp B.ch C.fp D.ch,*fp 【答案】A 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.设文件能够正常打开,则执行以下程序后,12.txt文件的内容是( ) main() {FILE *fp; char *s1="Fortran",*s2="Basic"; if((fp=fopen("12.txt","wb"))==NULL) {printf("Can't open 12.txt file "); exit(0);} fwrite(s1,7,1,fp); fseek(fp,0L,SEEK_SET); fwrite(s2,5,1,fp); fclose(fp); getch();} 【答案】Basican 25.以下程序的运行结果是( ) main() {FILE *fp; int i=20,j=30,k,n; fp=fopen("12.dat","w"); fprintf(fp,"%d ",i); fprintf(fp,"%d ",j); fclose(fp); fp=fopen("12.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d %d ",k,n); fclose(fp); getch();} 【答案】20 30 26.以下程序的运行结果是( ) main() {FILE *fp; char a[20],b[20]="123456789abcdef"; fp=fopen("fa.txt","w"); fputs(b,fp); fputs("ABCD012345",fp); fclose(fp); fp=fopen("fa.txt","r"); fgets(a,10,fp); puts(a); fgets(b,20,fp); puts(b); fclose(fp); getch();} 【答案】 123456789 abcdefABCD012345 27.以下程序的运行结果是( ) main() {FILE *fp; float i=7.29,k; fp=fopen("fb.dat","wb"); fprintf(fp,"%8.1f",i); fprintf(fp,"%8.1f",12.36); fclose(fp); fp=fopen("fb.dat","rb"); fscanf(fp,"%f%f",&i,&k); printf("i=%f k=%f ",i,k); fclose(fp); getch();} 【答案】i=7.300000 k=12.400000 28.以下程序的运行结果是( ) main() {FILE *fp; float a[6]={15.2,24.1,65.4,1.71,51.6,55}; int i,k; float dat[100]; fp=fopen("fc.dat","wb"); if(fp==NULL) {printf("can't open file!"); exit(1);} fwrite(a,sizeof(float),6,fp); fclose(fp); fp=fopen("fc.dat","rb"); if(fp==NULL) {printf("can't open file!"); exit(1);} k=fread(dat,sizeof(float),100,fp); for(i=0;i<k;i++) printf("%7.2f",dat[i]); fclose(fp); getch();} 【答案】 15.20 24.10 65.40 1.71 51.60 55.00 29.设a1.txt和a2.txt文件的内容分别是123!和456!,则执行以下程序段的输出结果是( ) void f(FILE *p) {char c; while((c=fgetc(p))!='!') putchar(c);} main() {FILE *fp; fp=fopen("a1.txt","r"); f(fp); fclose(fp); fp=fopen("a2.txt","r"); f(fp); fclose(fp); putchar(' '); getch();} 【答案】123456 30.运行以下程序,文件f2.txt中的内容是( ) #include <stdio.h> #include<string.h> #include <conio.h> void f(char fname[ ],char ch[ ]) {FILE *fp; int i; fp=fopen(fname,"a"); for(i=0;i<strlen(ch);i++) fputc(ch[i],fp); fclose(fp);} main() {f("f2.txt","very"); f("f2.txt","good"); getch();} 【答案】verygood 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:从键盘输入一些字符,并逐个将这些字符写入磁盘中,直到用户输入一个“#”为止。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include <stdlib.h> L3 #include <conio.h> L4 main() L5 {file *fp; L6 char ch,filename[10]; L7 printf("请输入所用的文件名: "); L8 scanf("%s",filename); L9 getchar(); L10 if((fp=fopen(filename,"rb"))==NULL) L11 {printf("cannot open file "); L12 exit(0);} L13 printf("请输入一个准备存储到磁盘的字符串(以#结束): "); L14 ch=getchar(); L15 while(ch=='#') L16 {fputc(ch,fp); L17 putchar(ch); L18 ch=getchar();} L19 getch();} 答案: L5 {FILE *fp; L10 if((fp=fopen(filename,"w"))==NULL) L15 while(ch!='#') 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:将一个磁盘文件中的信息复制到另一个磁盘文件中。请填空。 #include <stdio.h> #include <stdlib.h> #include <conio.h> main() {FILE *in,*out; char ch,infile[10],outfile[10]; printf("输入读入文件的名字: "); scanf("%s",infile); printf("输入输出文件的名字: "); scanf("%s",outfile); if((in=【1】)==NULL) {printf("无法打开此文件 "); exit(0);} if((out=【2】)==NULL) {printf("无法打开此文件 "); exit(0);} ch=fgetc(in); while(【3】) {fputc(ch,out); putchar(ch); ch=fgetc(in);} putchar(10); fclose(in); 【4】; getch();} 答案:①fopen(infile,"r") ②fopen(outfile,"w") ③!feof(in) ④fclose(out) 33.下列程序的功能是:从键盘读入若干个字符串,对它们按照字母大小的顺序,然后把排好序的字符串送到磁盘文件中保存。请填空。 #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> main() {FILE *fp; char str[3][10],temp[10]; int i,j,k,n=3; printf("Enter strings: "); for(i=0;i<n;i++) gets(str[i]); for(i=0;【1】;i++) {k=i; for(j=i+1;j<n;j++) if(【2】) k=j; if(k!=i) {strcpy(temp,str[i]); strcpy(str[i],str[k]); 【3】;}} if((fp=fopen("D:\\123\\12.txt","【4】"))==NULL) {printf("can't open file! "); exit(0);} printf(" The new sequence: "); for(i=0;i<n;i++) {fputs(str[i],fp); fputs(" ",fp); printf("%s ",str[i]);} getch();} 答案:①i<n-1 ②strcmp(str[k],str[j])>0 ③strcpy(str[k],temp) ④w 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务42:文件的读写 《编程语言-C语言》45分钟专题训练-第1页
1
任务42:文件的读写 《编程语言-C语言》45分钟专题训练-第2页
2
任务42:文件的读写 《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。