c语言复习题Word文档下载推荐.docx
《c语言复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言复习题Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
程序运行后的输出结果是
A)00
B)12345
C)14
D)12
(3)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是
A)feof(fp)
B)ftell(fp)
C)fgetc(fp)
D)rewind(fp)
(4)有以下程序
#include"
stdio.h"
voidWriteStr(char*fn,char*str)
{
FILE*fp;
fp=fopen(fn,"
W"
fputs(str,fp);
}
main()
WriteStr("
t1.dat"
"
start"
end"
程序运行后,文件t1.dat中的内容是
A)start
B)end
C)startend
D)endrt
(5)有如下程序
#include<
{FILE*fp1;
fp1=fopen("
f1.txt"
w"
fprintf(fp1,"
abc"
fclose(fp1);
若文本文件f1.txt中原有内容为:
good,则运行以上程序后文件f1.txt中的内容为
A)goodabc
B)abcd
C)abc
D)abcgood
(6)有以下程序
main()
{FILE*fp;
inti,k=0,n=0;
fp=fopen(“d1.dat”,”w”);
i<
4;
i++)fprintf(fp,”%d”,i);
fp=fopen(“d1.dat”,”r”);
fscanf(fp,”%d%d”,&
k,&
printf(“%d%d\n”,k,n);
执行后输出结果是
A)12
B)1230
C)123
D)00
(7)有以下程序(提示:
程序中fseek(fp,-2L*sizeof(int),SEEK_END);
语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
inti,a[4]={1,2,3,4},b;
wb"
for(i=0;
i++)fwrite(&
a[i],sizeof(int),1,fp);
fp=fopen("
data.dat
"
rb"
);
fseek(fp,-2L*sizeof(int).SEEK_END);
fread(&
b,sizeof(int),1,fp);
/*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("
%d\n"
B);
A)2
B)1
C)4
D)3
(8)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为
A)0
C)-1
D)一个非0值
(9)下列关于C语言数据文件的叙述中正确的是
A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(10)以下叙述中不正确的是
A)C语言中的文本文件以ASCⅡ码形式存储数据
B)C语言中对二进制文件的访问速度比文本文件快
C)C语言中,随机读写方式不适用于文本文件
D)C语言中,顺序读写方式不适用于二进制文件
[1][2][3][4]下一页
(11)以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。
{FILE*fout;
charch;
fout=fopen('
abc.txt'
’w'
ch=fgetc(stdin);
while(ch!
=’#’)
{fputc(ch,fout);
ch=fgetc(stdin);
fclose(fout);
出错的原因是
A)函数fopen调用形式错误B)输入文件没有关闭
C)函数fgetc调用形式错误D)文件指针stdin没有定义
(12)有以下程序
inti=20,j=30,k,n;
fp=fopen(“d1.dat”“w”);
fprintf(fp,“%d\n”,i);
fprintf(fp,“%d\n”j);
fp=fopen(“d1.dat”,“r”);
fp=fscanf(fp,“%d%d”,&
printf(“%d%d\n”,k,n);
A)2030
B)2050
C)3050
D)3020
(13)以下叙述中错误的是
A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B)在程序结束时,应当用fclose函数关闭已打开的文件
C)在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D)不可以用FILE定义指向二进制文件的文件指针
(14)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
A)fopen("
A:
\user\abc.txt"
r"
)
B)fopen("
\\user\\abc.txt"
r+"
)
C)fopen("
(15)下面的程序执行后,文件testt.t中的内容是
voidfun(char*fname.,char*st)
{FILE*myf;
inti;
myf=fopen(fname,“w”);
for(i=0;
strlen(st);
i++)fputc(st[i],myf);
fclose(myf);
{fun(“test”,“newworld”;
fun(“test”,“hello,”0;
A)hello,
B)newworldhello,
C)newworld
D)hello,rld
(16)若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
A)EOF
B)-1
C)非零值
D)NULL
(17)在C程序中,可把整型数以二进制形式存放到文件中的函数是
A)fprintf函数
B)fread函数
C)fwrite函数
D)fputc函数
(18)标准函数fgets(s,n,f)的功能是
A)从文件f中读取长度为n的字符串存入指针s所指的内存
B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C)从文件f中读取n个字符串存入指针s所指的内存
D)从文件f中读取长度为n-1的字符串存入指针s所指的内存
上一页[1][2][3][4]下一页
二、填空题:
(1)已有文本文件test.txt,其中的内容为:
Hello,everyone!
。
以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是【1】。
{FILE*fr;
charstr[40];
……
fgets(str,5,fr);
printf("
%s\n"
str);
fclose(fr);
(2)若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:
fp=fopen([2]);
(3)以下程序用来统计文件中字符个数。
请填空。
#include"
longnum=0L;
if((fp=fopen("
fname.dat"
))==NULL)
{pirntf("
Openerror\n"
exit(0);
}
while(【3】)
{fgetc(fp);
num++;
num=%1d\n"
num-1);
(4)以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE*myf;
lingf1;
myf=【4】(“test.t”,“rb”);
fseek(myf,0,SEEK_END);
f1=ftel(myf);
printf(“%d\n”,f1);
(5)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。
#include“stdio.h”
FILE*fp;
{charch;
if((fp=fopen(【5】))==NULL)exit(0);
while((ch=getchar())!
=’@’)fputc(ch,fp);
(6)以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。
main()
{FILE*fp;
charch,fname[32];
intcount=0;
Inputthefilename:
scanf("
%s"
,fname);
if((fp=fopen(【6】,"
))==NULL)
{printf("
Can'
topenfile:
%s\n"
exit(0);
Enterdata:
while((ch=getchar())!
="
#"
){fputc(ch,fp);
count++;
fprintf(【7】,"
\n%d\n"
,count);
fclose(fp);
(7)下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.
#include<
stdio,h>
{inti,j;
if((fp=fopen(【8】,"
))==NULL)exit(0);
10;
{scanf("
%d"
&
j);
fwrite(&
j,sizeof(int),1,【9】);
(8)以下程序的功能是:
从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
#include
charstr[100];
inti=0;
text.txt"
【10】))==NULL)
can'
topenthisfile.\n"
exit(0);
inputastring:
gest(str);
while(str[i])
{if(str[i]>
='
a'
&
str[i]<
z'
str[i]=【11】;
fputc(str[i],fp);
i++;
test.txt"
【12】);
fgets(str,100,fp);
(9)下面程序把从终端读入的文本用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。
if((fp=fopen(【13】))==NULL)exit(0);
while((ch=getchar())!
@'
)fputc(ch,fp);
【14】
(10)以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志.请填空.
{FILE*fp;
charch,fname[10];
lnputthenameoffile\n"
gets(fname);
if((fp=【15】)==NULL)
{printf("
Cannotopen\n"
Enterdata\n"
while((ch=getchar())!
#'
)fputc(【16】,fp);
}
(11)下面的程序用来统计文件中字符的个数,请填空。
longnum=0;
if((fp=fopen("
{printf("
topenfile!
\n"
while【17】
{fgetc(fp);
num=%d\n"
num);
(12)以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。
main(intargc,char*argv)
{FILE*f1,*f2;
if(argc<
【18】)
Parametersmissing!
if(((f1=fopen(argv[1],"
))==NULL)||((f2=fopen(argv[2],"
))==NULL))
Cannotopenfile!
while(【19】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
答案:
一、选择题:
01)C 02)D 03)D 04)B 05)C 06)B 07)D 08)A 09)D 10)D
11)A 12)A 13)D 14)B 15)A 16)C 17)A 18)B
二、填空题:
(1)Hell
(2)“d1.dat”,”rb”或“d1.dat”,”r+b”或”d1.dat”,”rb+”
(3)!
feof(fp)
(4)fopen
(5)“bi.dat”,“w”或“bi.dat”,“wt”或“bi.dat”,“w+t”
(6)fname
(7)fp
(8)"
bi.dat"
(9)fp
(10)"
或"
wt"
w+t"
wt+"
(11)str[i]-32或str[i]-('
-'
A'
或str[i]-'
+'
(12)"
r+t"
rt+"
(13)"
(14)fclose(fp)
(15)fopen(fname,"
(16)ch
(17)(!
feof(fp))
(18)3
(19)!
feof(f1)