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