内容正文:
<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); }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$