C语言程序设计题库 第十一章:数据文件的使用

一、单选题

1、下列关于C语言文件的叙述中正确的是
A、文件是由一系列数据依次排列组成,只能构成二进制文件
B、文件是由结构序列组成,可以构成二进制文件或文本文件
C、文件是由数据序列组成,可以构成二进制文件或文本文件
D、文件是由字符序列组成,其类型只能是文本文件

解析:答案选C
C语言中,文件是由数据序列构成,可以是字符流也就是文本文件构成,也可以是二进制文件。C选项正确。

2、下面选项中关于“文件指针”概念的叙述正确的是
A、文件指针是程序中用FILE定义的指针变量
B、文件指针就是文件位置指针,表示当前读写数据的位置
C、文件指针指向文件在计算机中的存储位置
D、把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符

解析:答案选A
C语言中,文件指针是一个指向FILE类型的结构体变量的指针,该结构体变量中包含了待操作文件的信息,如文件名、文件数据流的读写位置。通过文件指针可以读写与它相关联的文件,这种关联是fopen函数建立的。A选项正确。

3、有以下程序

#include <stdio.h>
int main( )
{ FILE *f;
f=fopen("file.txt","w");
fprintf(f,"abc");
fclose(f);
return 0;
}

若文本文件file.txt中原有内容为:hello,则运行以上程序后,文件file.txt中的内容为
A、abclo
B、abc
C、helloabc
D、abchello

解析:答案选B
C语言中文件的打开方式用“W”,表示只能向该文件进行写入操作。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删除,重建一个新的文件。所以本题中,原有文件会被删除,建立新的同名文件,写入的内容为“abc”。选项B正确。

4、以下程序依次把从f1文件内容拷贝到f2文件中,则在横线处应填入的选项是

#include <stdio.h>
int main()
{ 
FILE *fp1,*fp2; char ch;
fp1=fopen( "f1.dat", "r" );
fp2=fopen("f2.out", "w");
while( ( ch=fgetc(fp1)) !=EOF ) fputc( __________ );
fclose(fp1);
fclose(fp2);
}

A、ch, “fname”
B、fp2, ch
C、ch
D、ch, fp2

解析:答案选D
函数fgetc( )的功能是从指定的文件中读入一个字符,该文件必须以读的方式打开,若执行fgetc( )函数字符遇到文件结束符,函数将返回文件结束标志EOF (-1);fputc()的功能是把一个字符写到磁盘文件中,其调用格式为:fputc(ch,fp2),其中ch为待输出的字符,fp2为文件指针变量。选项D正确。

5、有以下程序:

#include <stdio.h>
int main( )
{ FILE *fp; int a[10]={1,2,3}, i, n;
fp=fopen("d1.dat", "w");
for (i=0; i<3; i++) fprintf(fp, "%d",a[i]);
fprintf(fp,"\n");
fclose(fp);
fp=fopen("d1.dat", "r");
fscanf(fp,"%d", &n);
fclose(fp);
printf("%d\n", n);
return 0;
}

程序的运行结果是________。
A、321
B、12300
C、1
D、123

解析:答案选D
fprintf()、fscanf()函数和print()、scanf()函数功能类似,都是格式化写、读数据,不过前者是针对磁盘文件,后者是针对显示器和键盘。在本题中,第一个for循环把数组的前三个数据写到到fp指向的文件中,形式为123,当用读方式打开此文件时,读入的数据是123的整型格式,所以输出123。选项D正确。
程序运行结果:
在这里插入图片描述
6、不仅可将C源程序存在磁盘上,还可将数据按数据类型分别以什么的形式存在磁盘上()。
A、内存
B、缓冲区
C、文件
D、寄存器

解析:答案选C

7、若执行fopen函数发生错误,则函数的返回值是________。
A、地址值
B、1
C、EOF
D、NULL

解析:答案选D

8、当执行fclose函数时,如果执行成功,则其返回值为________。
A、1
B、0
C、-1
D、True

解析:答案选B

9、设文件指针fp已定义,执行语句fp=fopen(“file”,“w”);后,以下针对文本文件file操作叙述的选项中正确的是 ________。
A、只能写不能读
B、写操作结束后可以从头开始读
C、可以在原有内容后追加写
D、可以随意读和写

解析:答案选A

10、以下叙述中错误的是________。
A、gets函数用于从终端读入字符串
B、getchar函数用于从磁盘文件读入字符
C、fputs函数用于把字符串输出到文件
D、fwrite函数用于以二进制形式输出数据到文件

解析:答案选B

11、有以下程序

#include <stdio.h>
int main( )
{ FILE *pf;
Char *s1="China", *s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,1,pf);
rewind(pf);
fwrite(s1,5,1,pf);
fclose(pf);
return 0;
}

以上程序执行后abc.dat文件的内容是________。
A、China
B、Chinang
C、ChinaBeijing
D、BeijingChina

解析:答案选B

二、填空题

12、以下程序首先由键盘输入一个文件名,然后把从键盘输入的字符依次存放到该文件中,用“#”作为结束输入的标志,请填空。

#include <stdio.h>
int main( )
{ FILE *fp;
char ch,fname[20];
printf("Input the name of fine\n");
gets(fname);
if ((fp= fopen(____,____))==NULL)
{
printf("Can't open the file\n"); exit(0);
}
printf("Enter data\n");
while((ch=getchar())!='#')
fputc(____,fp);
fclose(fp);
return 0;
}

解析:答案为:(1) fname (2) “w” (3) ch

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直学不会编程的小徐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值