全国计算机等级考试二级C语言之文件
一、选择题:
(1)下列语句中错误的是
a)C语言访问二进制文件的速度比文本文件快
b)C语言中,随机文件以二进制代码的形式存储数据
C)语句文件FP;定义了一个名为fp的文件指针
d)C语言的文本文件以ASCII码存储数据。
(2)有以下程序
# include
main()
{ file * FP;int i,k,n;
fp=fopen("data.dat "," w+");
for(I = 1;i { fprintf(fp," %d ",I);
if(i%3==0) fprintf(fp," \ n ");
}
倒带(FP);
fscanf(fp," %d%d ",&k,& n);printf("%d %d\n ",k,n);
f close(FP);
}
程序运行后的输出结果是
a)00
b)123 45
c)1 4
d)1 2。
(3)以下与函数fseek(FP,0L,seek _ set)具有相同功能的函数是
a)feof(FP)
b)ftell(FP)
c)fgetc(FP)
d)rewind(。
(4)有以下程序
# include " stdio . h "
void Writer(char * fn,char * str)
{
file * FP;
fp=fopen(fn," W ");
fputs(str,FP);
f close(FP);
}
main()
{
WriteStr(" t1 . dat "," start ");
WriteStr("t1.dat "," end ");
}
程序运行后,文件t1.dat中的内容为
a)start
b)end
c)start end
d)endrt。
(5)有以下程序
# include
main()
{ file * fp1;
fp1=fopen("f1.txt "," w ");
fprintf(fp1," ABC ");
f close(fp1);
}
如果文本文件f1.txt中的原始内容为:good,运行上述程序后文件f1.txt中的内容为
a)good ABC
b)ABCD
c)ABC
d)ABC good。
(6)有以下程序
# include
main()
{ file * FP;int i,k=0,n = 0;
fp=fopen("d1.dat "," w ");
for(I = 1;I fclose(FP);
fp=fopen("d1.dat "," r ");
fscanf(fp," %d%d ",&k,& n);printf("%d %d\n ",k,n);
f close(FP);
}
执行后的输出结果是
a)1 2
b)123 0
c)1 23
d)0。
(7)有以下程序(提示:程序中有FSeek (FP,-2L * sizeof (int),seek _ end);该语句的作用是将位置指针从文件末尾向前推进2*sizeof(int)字节)
# include
main()
{ file * FP;int i,a[4]={1,2,3,4},b;
fp=fopen("data.dat "," WB ");
for(I = 0;I fclose(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。
(8)如果fp定义正确,指向一个文件,那么函数feof(fp)的值是
a)0
b)1
c)-1
d)不满足文件结尾时的一个非零值。
(9)下列关于C语言数据文件的说法正确的是
A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,根据数据的存储形式可分为二进制文件和文本文件[/br
(10)下列说法不正确的是:
a)C语言中的文本文件以ASCⅱII代码形式存储数据
b)C语言中二进制文件的访问速度比文本文件快
C)C语言中随机读写方式不适合C语言中的文本文件
d)顺序读写方式不适合。
(11)下面的程序试图将从终端输入的字符输出到一个名为abc.txt的文件中,并结束输入输出操作,直到从终端读取到字符#为止,但程序是错误的。
# include
main()
{ FILE * fout;char ch
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)有以下程序
# include
main()
{ file * FP;int i=20,j=30,k,n;
FP = fopen(" D1 . dat " " w ");
fprintf(fp," %d\n ",I);fprintf(fp," % d \ n " j);
f close(FP);
fp=fopen("d1.dat "," r ");
fp=fscanf(fp," %d%d ",&k,& n);printf("%d%d\n ",k,n);
f close(FP);
}
程序运行后的输出结果是
a)20 30
b)20 50
c)30 50
d)30 20。
(13)下列语句中错误的是
A)二进制文件可以先在文件末尾读取,但顺序文件不能
B)程序结束时,打开的文件要用fclose函数关闭
C)使用fread函数从二进制文件读取数据时,可以用数组名将数据读入数组中的所有元素[
(14)要打开A盘的user子目录中名为abc.txt的文本文件进行读写,下面满足这个要求的函数调用是
a) fopen ("a: \ user \ abc.txt "," r")
b) fopen ("a: \ \ "r+"
C)fopen(" A:\ user \ ABC . txt "," Rb ")
C)fopen(" A:\ \ user \ \ ABC . txt "," w ")
(15)执行以下程序后,文件testt.t中的内容为
# include
void fun(char * fname。,char * ST)
{ file * myf;int I;
myf=fopen(fname," w ");
for(I = 0;if close(myf);
}
main()
{ fun(" test "," new world ";fun("测试","你好",0;)
A)你好,
B)新世界你好,
C)新世界你好,rld
(16)如果fp是指向一个文件的指针,并且该文件的结尾已经被读取,则库函数feof(fp)的返回值为
a) eof
b)-1
c)非零值
D) NULL
(17)。能够在文件中以二进制形式存储整数的函数有
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的字符串并将其存储在所指向的内存中二、填写空题:
(1)有一个文本文件test.txt,内容是:大家好!。在下面的程序中,文件test.txt已经被正确地打开进行“读取”。如果文件指针fr指向该文件,则程序的输出结果为[1]。
# include
main()
{ FILE * fr;字符串(11) str[i]-32或str[i]-('a'-'A '或str[i]-'a'+'A ';
……
fgets(str,5,fr);
printf("%s\n ",str);
f close(fr);
}
(2)如果fp正确定义为文件指针,d1.dat为二进制文件,请填写空打开此文件进行“读取”:FP = fopen([2]);。
(3)下面的程序用于统计文件中的字符数。请填写空。
# include " stdio . h "
main()
{ FILE * FP;long num = 0L
if((fp=fopen("fname.dat "," r ")= = NULL)
{ PIR ntf(" Open error \ n ");退出(0);}
while(【3】)
{ fgetc(FP);num++;}
printf("num=%1d\n ",num-1);
f close(FP);
}
(4)下面的程序段打开文件后,先用fseek函数定位文件末尾的文件位置指针,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。请填写空。
FILE * myf;凌f1;
myf= 【4】 ("test.t "," Rb ");
fseek(myf,0,SEEK _ END);f1 = ftel(myf);
fclose(myf);
printf("%d\n ",f1);
(5)下面的程序将从终端读入的文本(以@作为文本的结尾)输出到一个名为bi.dat Please fill in 空的新文件中。
# include " stdio . h "
FILE * FP;
{ char ch;
if((FP = fopen(【5】))= = NULL)exit(0);
while( (ch=getchar())!='@') fputc (ch,FP);
f close(FP);
}
(6)在下面的程序中,用户通过键盘输入一个文件名,然后输入一串字符(以#结尾)存储在这个文件中形成一个文本文件,并在文件的末尾写入字符数。请填写空。
# include
main()
{ FILE * FP;
char ch,fname(3) !自由活动区;int count = 0;
printf("输入文件名:");scanf("%s ",fname);
if((FP = fopen(【6】" w+")= = NULL)
{ printf("打不开文件:%s \n ",fname);退出(0);}
printf("输入数据:\ n ");
while((ch=getchar())!= " # " { fputc(ch,FP);count++;}
fprintf( 【7】," \n%d\n ",count);
f close(FP);
}
(7)下面的程序将从终端读取的10个整数以二进制方式写入一个名为bi.dat的新文件中。请填写空。
#包含
file * FP;
main()
{ int i,j;
if((fp=fopen( 【8】," WB "))= = NULL)exit(0);
for(I = 0;i { scanf("%d ",& j);
fwrite(&j,sizeof(int),1,【9】);
}
fclose(FP);
}
(8)下面这个程序的作用是:从键盘输入一个字符串,将字符串中的小写字母转换成大写字母,输出到文件test.txt中,然后从文件中读取字符串并显示出来。请填写空。
# include
main()
{ FILE * FP;
char str[100];int I = 0;
if((fp=fopen("text.txt ",【10】)= = NULL)
{ printf("无法打开此文件。\ n ");退出(0);}
printf(" input string:\ n ");gest(str);
while(str[I])
{ if(str[I]> = ' a ' & & str[I]str[I]=【11】;
fputc(str[i],FP);
i++;
}
fclose(FP);
fp=fopen("test.txt ",【12】);
fgets(str,100,FP);
printf("%s\n ",str);
f close(FP);
}
(9)下面的程序将从终端读取的文本复制到一个名为bi.dat的新文件中,请填写空。
#包含
FILE * FP;
main()
{ char ch;
if((FP = fopen(【13】))= = NULL)exit(0);
while ((ch=getchar())!='@')fputc(ch,FP);【14】
(10)对于下面的程序,终端输入一个文件名,然后将终端键盘输入的字符依次存入文件,用#作为结束输入的标志。请填写空。
# include
main()
{ file * FP;
char ch,fname[10];
printf("输入文件名\ n ");
gets(fname);
if((FP =【15】)= = NULL)
{ printf("无法打开\ n ");退出(0);}
printf(" Enter data \ n ");
while((ch=getchar())!='#') fputc(【16】,FP);
f close(FP);}
(11)以下程序用于计算文件中的字符数。请填写空。
# include
main()
{ FILE * FP;
long num = 0;
if(( fp=fopen("fname.dat "," r ")= = NULL)
{ printf("打不开文件!\ n ");退出(0);}
while【17】
{ fgetc(FP);num++;}
printf("num=%d\n ",num);
f close(FP);
}
(12)下面的C语言程序将一个文件从磁盘复制到另一个文件,两个文件名在命令行中给出。
# include
main(int argc,char *argv)
{ FILE *f1,* f2char ch
if(argc <【18】)
{ printf("参数丢失!\ n ");退出(0);}
if((f1 = fopen(argv[1]," r))= = NULL)| |((F2 = fopen(argv[2]," w))= = NULL))
{ printf("打不开文件!\ n ");退出(0);}
while(【19】)fputc(fgetc(f1),F2);
f close(f1);fclose(F2);}
回答:
一、选择题:
01)C 02)D 03)D 04)B 05)C
06)B 07)D 08)A 09)D 10)D
第一部分第二部分第一部分第二部分第三部分第一部分第二部分第三部分第三部分第三部分第四部分第三部分第四部分第三部分第四部分第三部分第四部分第四部分第三部分第四部分第四部分第四部分第四部分第三部分第四部分第四部分。填写空问题:
(1)地狱
(2)“d1.dat”、“rb”或“d1.dat”、“r+b”或“D1 . dat”、“rb+”
[32]
(4) fopen
(5) bi.dat,w或bi.dat "," wt或bi.dat,w+t
(6)名称
(7) fp
(8)“bi . dat”
(9) fp
(10)“w”或“w+”或“wt”或“w+t”或“wt+”
[40]
(12)“r”或“r+”或“r+t”或“rt+”
(13) "bi.dat "," w "
(14) fclose(fp)
(15) fopen(fname,“w”)
(16) ch
(17) (!feof(fp))
(18) 3
(19) !一级方程式赛车
位律师回复
0条评论