第十二章 文件《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷

2025-07-23
| 2份
| 15页
| 122人阅读
| 1人下载

内容正文:

<C语言程序设计教程>清华大学出版社(第3版) 第十二章 文件 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 选择题(共10题,每小题2分,共20分) 1、 用什么打开方式文档可以创建一个二进制文档并进行读写操作 。 A、 B、C、D、 B、 A、w+ B、w+b C、bw+ D、 wb 【答案】B 【解析】题干中需要创建一个二进制的文档,打开方式中只有W有创建功能,二进制文档则是b,又要求可进行读写操作,正确的文件打开方式为wb+或w+b,故选B。 2、 若调用fclose函数,则正常关闭文件的返回值为 。 A、1 B、非0值 C、EOF D、0 【答案】D 【解析】fclose函数正常关闭文件,函数返回值为0,否则返回非0值,故选D。 3、 语句FILE *fp;中FILE的本质是 。 A、结构体指针 B、整型变量 C、文件内容 D、枚举类型 【答案】A 【解析】FILE是一个结构体类型,fp是指向这个结构体的指针,故选A。 4、 若要以读写方式打开C盘上wind子目录下的zhang.txt的文本文件,并且保留原有内容,在文件的末尾追加新内容,下列语句正确的是 。 A、fopen(“C:\wind\zhang.txt”,”w+”); B、fopen(“C:\\wind\\zhang.txt”,”w+”); C、fopen(“C:\\wind\\zhang.txt”,”a+”); D、fopen(“C:\wind\zhang.txt”,”a+”); 【答案】C 【解析】题干是说以读写方式打开,并保留原有内容,在文件末尾追加新内容,打开方式用“a+”,A、D选项路径书写错误,故选C。 5、 若有定义 char ch[10];,fp是指向某一个已经正确打开的文件指针,以下函数调用中不正确的是 。 A、 B、 fread(ch[5],sizeof(char),4,fp)原创精品资源学科网独家享有版权,侵权必究! C、 fread(&ch[0],sizeof(char),4,fp) D、 fread(ch,4*sizeof(char),1,fp) E、 fread(ch,sizeof(char),4,fp) 【答案】A 【解析】fread函数第一个参数是内存地址,故选A。 6、 函数调用语句fseek(fp,-3L,1);的含义是 。 A、 将文件位置指针从文件开始处向后移动3个字节。 B、 将文件位置指针从文件末尾向前移动3个字节。 C、 将文件位置指针从文件当前位置向后移动3个字节。 D、 将文件位置指针从文件当前位置向前移动3个字节。 【答案】C 【解析】fseek函数功能将文件的位置指针移动到特定的位置,第3个参数1或者SEEK_CUR表示文件指针的当前位置,第2个参数是移动的字节,故选C。 7、 rewind(fp)等价于 。 A、fseek(fp, 0L, SEEK_END); B、fseek(fp, 0L, SEEK_CUR); C、fseek(fp, 0L, SEEK_SET); D、fclose(fp); 【答案】C 【解析】rewind函数的功能是将文件位置指针重新置回到文件首部,fseek函数的功能是将文件的位置指针移动到特定的位置,SEEK_SET的含义是从文件开始处移动0个字节处,故选C。 8、 以下哪个选项能将浮点数3.14写入文件 。 A、fputc(3.14, fp); B、fprintf(fp, "%f", 3.14); C、fwrite(3.14, sizeof(float), 1, fp); D、fputs("3.14", fp); 【答案】B 【解析】A选项,fputc函数功能是写入单个字符,参数必须是整型,3.14是浮点数,会被转换为整数3;C选项,fwrite函数第一个参数是内存地址指针,但3.14是值常量;D选项,虽然写入文本3.14,但是字符串常量,题干要求是浮点数。故选B。 9、 以下函数中,对二进制文件进行读写没有意义的是 。 A、fputc() B、fwrite() C、fread() D、fgets() 【答案】D 【解析】fgets()和fputs()函数主要对文本文件进行读写,但对二进制文件操作无意义。故选D。原创精品资源学科网独家享有版权,侵权必究! 10、 关于ftell()函数,下列说法错误的是 。 A、返回当前文件位置指针的字节偏移量。 B、对文本文件操作时返回值可直接用于fseek。 C、打开新文件时返回值总是0。 D、配合fseek 函数,可用于计算文件大小。 【答案】B 【解析】文本文件可能因为换行符转换导致位置计算不精确,故选B。 二、填空题(共6空,每空2分,共12分) 1、以”rb”的方式打开文件时,表示 。 【答案】以读的方式打开一个二进制文件 2、 若要打开C盘下windows子目录下创建名为123.txt的文本文件,并进行读、写操作,则打开函数语句可写为 。 【答案】fopen(“C:\\windows\\123.txt”,”w+”) 3、 将文件位置指针fp移到开头的函数是 。 【答案】rewind(fp)或fseek(fp,0L,SEEK_SET) 4、 文件操作结束后必须使用 函数关闭文件,否则可能会丢失文件。 【答案】fclose() 5、 若fgets(str,10,fp)读取成功,str中最多包含 个字符。 【答案】9 6、 fwrite(&data,sizeof(int),1,fp)的功能是 。 【答案】将整型变量data的值写入fp指向的文件中 三、程序运行题(共6题,每小题3分,共18分) 1、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h> void main() { char c; FILE *fp ; fp=fopen("F:\\wang.txt", "r"); fseek(fp,5L,SEEK_SET);原创精品资源学科网独家享有版权,侵权必究! c = fgetc(fp); printf("%c", c); fclose(fp); } 文档内容为:SCHOOL.txt 【答案】L 2、运行以下程序,则文档123.txt的内容为 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp = fopen("123.txt", "w"); fprintf(fp, "Start:"); for (int i = 1; i <= 3; i++) fprintf(fp, "%c", 'A'+i); fclose(fp); } 【答案】Start:BCD 3、运行以下程序,则文档123.txt的内容为 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp1 = fopen("F:\\log.txt", "r"); FILE *fp2 = fopen("F:\\123.txt", "w"); char ch; while ((ch = fgetc(fp1)) != EOF) fputc(ch, fp2); fclose(fp1); fclose(fp2);} 文档log.txt的内容为1a56bcF,文档123.txt的内容为123456 【答案】1a56bcF 4、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h>原创精品资源学科网独家享有版权,侵权必究! void main() { FILE *fp ; fp= fopen("F:\\wang.txt", "r"); printf("%d ", feof(fp)); fclose(fp); } 文档wang.txt内容为:SCHOOL.txt 【答案】0 5、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp ; int x=425,y=83; fp= fopen("F:\\wang.txt", "w"); fprintf(fp,"%d%d",x,y); fclose(fp); fp= fopen("F:\\wang.txt", "r"); fscanf(fp,"%d%d",&x,&y); fclose(fp); printf("x=%d,y=%d ", x,y);} 【答案】x=42583,y=83 6、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp ; int i,a; fp=fopen("data.dat","wb+"); for(i=5;i<10;i++) fwrite(&i,sizeof(int),1,fp);原创精品资源学科网独家享有版权,侵权必究! for(i=3;i>=1;i--) { fseek(fp,-i*sizeof(int),2); fread(&a,sizeof(int),1,fp); printf("%d\t",a);} fclose(fp); } 【答案】7 8 9 四、程序填空题(共6空,每空5分,共30分) 1、程序功能:输入某学校30名教师信息,包括教师编号、姓名和住址并存入名为SCHOOLT.txt的文件中。 #include<stdio.h> struct SCHOOLT { int id; char name[20]; char add[20]; }st[30]; void save() { FILE *fp; int i; if( ) return ; for(i=0;i<30;i++) if(fwrite( )!=1) printf("file write error!"); fclose(fp); } void main() { int i; for(i=0;i<30;i++) scanf("%d,%s,%s", ); save(); } 【答案】(fp=fopen("E:\\SCHOOLT.txt","w"))==NULL &st[i],sizeof(struct SCHOOLT),1,fp 原创精品资源学科网独家享有版权,侵权必究! &st[i].id,st[i].name,st[i].add 2、文本文件123.txt中存放了n个正整数,整数之间用空格或回车符分隔,现将其中的回文数输出。请填空。 #include<stdio.h> #include<stdlib.h> { int m=n,s=0; while(m) { s=s*10+m%10; m/=10; } if(s==n) return 1; else return 0; } void main() { FILE *fp; int n; fp=fopen("F:wang.txt","r"); while( ) if(palindrome(n)) printf("%d\t",n); } 【答案】int palindrome(int n) fscanf(fp,"%d",&n)==1 fclose(fp); 五、程序改错题(共20分,一题两处错误) 1、程序功能:从键盘输入一个学生的姓名和年龄,将其写入磁盘文件中(磁盘文件名存放在数组中),程序运行结束后用记事本查看文件内容。请找出错误行,并改正。 L1 #include<stdio.h> L2 #include<stdlib.h> L3 void main() L4 { file *fp;原创精品资源学科网独家享有版权,侵权必究! L5 char name[20],fname[20]; L6 int age; L7 scanf("%s,%d",name,&age); L8 scanf("%s",fname); L9 if((fp=fopen(“fname”,"w"))==NULL) L10 {printf("文件打开失败"); exit (0); } L11 fprintf(fp,"%s,%d",name,age); L12 fclose(fp); } 【答案】L4 { FILE *fp; L9 if((fp=fopen(fname,"w"))==NULL) 2、程序功能:输出文件”F:ab\wang.txt”文件中最长行的长度和它的位置。请找出错误行,并改正。 L1 #include<stdio.h> L2 void main() L3 { int lin,i,j=0,k=0; L4 char ch; L5 FILE *fp; L6 fp=fopen("F:ab\wang.txt","w"); L7 while(fgetc(fp)!=EOF) L8 { i=1; L9 while(ch=fgetc(fp)!=' ') i++; L10 j++; L11 if(i>k) {k=i;lin=j;} } L12 printf("%d\t%d ",k,lin); L13 fclose(fp); } 【答案】L6 fp=fopen("F:\\ab\\wang.txt","r"); L9 while((ch=fgetc(fp))!=' '&&ch!=EOF) i++; 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ <C语言程序设计教程>清华大学出版社(第3版) 第十二章 文件 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 选择题(共10题,每小题2分,共20分) 1、 用什么打开方式文档可以创建一个二进制文档并进行读写操作 。 A、 B、C、D、 B、 A、w+ B、w+b C、bw+ D、 wb 2、 若调用fclose函数,则正常关闭文件的返回值为 。 A、1 B、非0值 C、EOF D、0 3、 语句FILE *fp;中FILE的本质是 。 A、结构体指针 B、整型变量 C、文件内容 D、枚举类型 4、 若要以读写方式打开C盘上wind子目录下的zhang.txt的文本文件,并且保留原有内容,在文件的末尾追加新内容,下列语句正确的是 。 A、fopen(“C:\wind\zhang.txt”,”w+”); B、fopen(“C:\\wind\\zhang.txt”,”w+”); C、fopen(“C:\\wind\\zhang.txt”,”a+”); D、fopen(“C:\wind\zhang.txt”,”a+”); 5、 若有定义 char ch[10];,fp是指向某一个已经正确打开的文件指针,以下函数调用中不正确的是 。 A、 B、 fread(ch[5],sizeof(char),4,fp) C、 fread(&ch[0],sizeof(char),4,fp) D、 fread(ch,4*sizeof(char),1,fp) E、 fread(ch,sizeof(char),4,fp) 6、 函数调用语句fseek(fp,-3L,1);的含义是 。 A、 将文件位置指针从文件开始处向后移动3个字节。 B、 将文件位置指针从文件末尾向前移动3个字节。 C、 将文件位置指针从文件当前位置向后移动3个字节。 D、 将文件位置指针从文件当前位置向前移动3个字节。 7、 rewind(fp)等价于 。 A、fseek(fp, 0L, SEEK_END); B、fseek(fp, 0L, SEEK_CUR); C、fseek(fp, 0L, SEEK_SET); D、fclose(fp); 8、 以下哪个选项能将浮点数3.14写入文件 。 原创精品资源学科网独家享有版权,侵权必究! A、fputc(3.14, fp); B、fprintf(fp, "%f", 3.14); C、fwrite(3.14, sizeof(float), 1, fp); D、fputs("3.14", fp); 9、 以下函数中,对二进制文件进行读写没有意义的是 。 A、fputc() B、fwrite() C、fread() D、fgets() 10、 关于ftell()函数,下列说法错误的是 。 A、返回当前文件位置指针的字节偏移量。 B、对文本文件操作时返回值可直接用于fseek。 C、打开新文件时返回值总是0。 D、配合fseek 函数,可用于计算文件大小。 二、填空题(共6空,每空2分,共12分) 1、以”rb”的方式打开文件时,表示 。 2、 若要打开C盘下windows子目录下创建名为123.txt的文本文件,并进行读、写操作,则打开函数语句可写为 。 3、 将文件位置指针fp移到开头的函数是 。 4、 文件操作结束后必须使用 函数关闭文件,否则可能会丢失文件。 5、 若fgets(str,10,fp)读取成功,str中最多包含 个字符。 6、 fwrite(&data,sizeof(int),1,fp)的功能是 。 三、程序运行题(共6题,每小题3分,共18分) 1、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h> void main() { char c; FILE *fp ; fp=fopen("F:\\wang.txt", "r"); fseek(fp,5L,SEEK_SET); c = fgetc(fp); printf("%c", c); fclose(fp); } 文档内容为:SCHOOL.txt原创精品资源学科网独家享有版权,侵权必究! 2、运行以下程序,则文档123.txt的内容为 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp = fopen("123.txt", "w"); fprintf(fp, "Start:"); for (int i = 1; i <= 3; i++) fprintf(fp, "%c", 'A'+i); fclose(fp); } 3、运行以下程序,则文档123.txt的内容为 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp1 = fopen("F:\\log.txt", "r"); FILE *fp2 = fopen("F:\\123.txt", "w"); char ch; while ((ch = fgetc(fp1)) != EOF) fputc(ch, fp2); fclose(fp1); fclose(fp2);} 文档log.txt的内容为1a56bcF,文档123.txt的内容为123456 4、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp ; fp= fopen("F:\\wang.txt", "r"); printf("%d ", feof(fp)); fclose(fp); } 文档wang.txt内容为:SCHOOL.txt原创精品资源学科网独家享有版权,侵权必究! 5、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp ; int x=425,y=83; fp= fopen("F:\\wang.txt", "w"); fprintf(fp,"%d%d",x,y); fclose(fp); fp= fopen("F:\\wang.txt", "r"); fscanf(fp,"%d%d",&x,&y); fclose(fp); printf("x=%d,y=%d ", x,y);} 6、以下程序的运行结果是 。 #include<stdio.h> #include<stdlib.h> void main() { FILE *fp ; int i,a; fp=fopen("data.dat","wb+"); for(i=5;i<10;i++) fwrite(&i,sizeof(int),1,fp); for(i=3;i>=1;i--) { fseek(fp,-i*sizeof(int),2); fread(&a,sizeof(int),1,fp); printf("%d\t",a);} fclose(fp); } 原创精品资源学科网独家享有版权,侵权必究! 四、程序填空题(共6空,每空5分,共30分) 1、程序功能:输入某学校30名教师信息,包括教师编号、姓名和住址并存入名为SCHOOLT.txt的文件中。 #include<stdio.h> struct SCHOOLT { int id; char name[20]; char add[20]; }st[30]; void save() { FILE *fp; int i; if( ) return ; for(i=0;i<30;i++) if(fwrite( )!=1) printf("file write error!"); fclose(fp); } void main() { int i; for(i=0;i<30;i++) scanf("%d,%s,%s", ); save(); } 2、文本文件123.txt中存放了n个正整数,整数之间用空格或回车符分隔,现将其中的回文数输出。请填空。 #include<stdio.h> #include<stdlib.h> { int m=n,s=0; while(m) { s=s*10+m%10; m/=10; }原创精品资源学科网独家享有版权,侵权必究! if(s==n) return 1; else return 0; } void main() { FILE *fp; int n; fp=fopen("F:wang.txt","r"); while( ) if(palindrome(n)) printf("%d\t",n); } 五、程序改错题(共20分,一题两处错误) 1、程序功能:从键盘输入一个学生的姓名和年龄,将其写入磁盘文件中(磁盘文件名存放在数组中),程序运行结束后用记事本查看文件内容。请找出错误行,并改正。 L1 #include<stdio.h> L2 #include<stdlib.h> L3 void main() L4 { file *fp; L5 char name[20],fname[20]; L6 int age; L7 scanf("%s,%d",name,&age); L8 scanf("%s",fname); L9 if((fp=fopen(“fname”,"w"))==NULL) L10 {printf("文件打开失败"); exit (0); } L11 fprintf(fp,"%s,%d",name,age); L12 fclose(fp); } 2、程序功能:输出文件”F:ab\wang.txt”文件中最长行的长度和它的位置。请找出错误行,并改正。 L1 #include<stdio.h> L2 void main()原创精品资源学科网独家享有版权,侵权必究! L3 { int lin,i,j=0,k=0; L4 char ch; L5 FILE *fp; L6 fp=fopen("F:ab\wang.txt","w"); L7 while(fgetc(fp)!=EOF) L8 { i=1; L9 while(ch=fgetc(fp)!=' ') i++; L10 j++; L11 if(i>k) {k=i;lin=j;} } L12 printf("%d\t%d ",k,lin); L13 fclose(fp); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

第十二章 文件《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷
1
第十二章 文件《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷
2
第十二章 文件《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。