一、选择题:(1)以下叙述中错误的是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句FILEfp;定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据(2)有以下程序#includestdio.hmain(){FILE*fp;inti,k,n;fp=fopen(data.dat,w+);for(i=1;i6;i++){fprintf(fp,%d,i);if(i%3==0)fprintf(fp,\n);}rewind(fp);fscanf(fp,%d%d,&k,&n);printf(%d%d\n,k,n);fclose(fp);}程序运行后的输出结果是A)00B)12345C)14D)12(3)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是A)feof(fp)B)ftell(fp)C)fgetc(fp)D)rewind(fp)(4)有以下程序#includestdio.hvoidWriteStr(char*fn,char*str){FILE*fp;fp=fopen(fn,W);fputs(str,fp);fclose(fp);}main(){WriteStr(t1.dat,start);WriteStr(t1.dat,end);}程序运行后,文件t1.dat中的内容是A)startB)endC)startendD)endrt(5)有如下程序#includestdio.hmain(){FILE*fp1;fp1=fopen(f1.txt,w);fprintf(fp1,abc);fclose(fp1);}若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为A)goodabcB)abcdC)abcD)abcgood(6)有以下程序#includestdio.hmain(){FILE*fp;inti,k=0,n=0;fp=fopen(“d1.dat”,”w”);for(i=1;i4;i++)fprintf(fp,”%d”,i);fclose(fp);fp=fopen(“d1.dat”,”r”);fscanf(fp,”%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}执行后输出结果是A)12B)1230C)123D)00(7)有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)#includestdio.hmain(){FILE*fp;inti,a[4]={1,2,3,4},b;fp=fopen(data.dat,wb);for(i=0;i4;i++)fwrite(&a[i],sizeof(int),1,fp);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)2B)1C)4D)3(8)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为A)0B)1C)-1D)一个非0值(9)下列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(10)以下叙述中不正确的是A)C语言中的文本文件以ASCⅡ码形式存储数据B)C语言中对二进制文件的访问速度比文本文件快C)C语言中,随机读写方式不适用于文本文件D)C语言中,顺序读写方式不适用于二进制文件11)以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#includestdio.hmain(){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)有以下程序#includestdio.hmain(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”j);fclose(fp);fp=fopen(“d1.dat”,“r”);fp=fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序运行后的输出结果是A)2030B)2050C)3050D)3020(13)以下叙述中错误的是A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以B)在程序结束时,应当用fclose函数关闭已打开的文件C)在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D)不可以用FILE定义指向二进制文件的文件指针(14)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是A)fopen(A:\user\abc.txt,r)B)fopen(A:\\user\\abc.txt,r+)C)fopen(A:\user\abc.txt,rb)C)fopen(A:\\user\\abc.txt,w)(15)下面的程序执行后,文件testt.t中的内容是#includestdio.hvoidfun(char*fname.,char*st){FILE*myf;inti;myf=fopen(fname,“w”);for(i=0;istrlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun(“test”,“newworld”;fun(“test”,“hello,”0;)A)hello,B)newworldhello,C)newworldD)hello,rld(16)若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是A)EOFB)-1C)非零值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)已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是【1】。#includestdio.hmain(){FILE*fr;charstr[40];……fgets(str,5,fr);printf(%s\n,str);fclose(fr);}(2)若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen([2]);。(3)以下程序用来统计文件中字符个数。请填空。#includestdio.hmain(){FILE*fp;longnum=0L;if((fp=fopen(fname.dat,r))==NULL){pirntf(Openerror\n);exit(0);}while(【3】){fgetc(fp);num++;}printf(num=%1d\n,num-1);fclose(fp);}(4)以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf;lingf1;myf=【4】(“test.t”,“rb”);fseek(myf,0,SEEK_END);f1=ftel(myf);fclose(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);fclose(fp);}(6)以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。#includestdio.hmain(){FILE*fp;charch,fname[32];intcount=0;printf(Inputthefilename:);scanf(%s,fname);if((fp=fopen(【6】,w+))==NULL){printf(Can'topenfile:%s\n,fname);exit(0);}printf(Enterdata:\n);while((ch=getchar())!=#){fputc(ch,fp);count++;}fprintf(【7】,\n%d\n,count);fclose(fp);}(7)下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.#includestdio,hFILE*fp;main(){inti,j;if((fp=fopen(【8】,wb))==NULL)exit(0);for(i=0;i10;i++){scanf(%d,&j);fwrite(&j,sizeof(int),1,【9】);}fclose(fp);}(8)以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。#includemain(){FILE*fp;charstr[100];inti=0;if((fp=fopen(text.txt,【10】))==NULL){printf(can'topenthisfile.\n);exit(0);}printf(inputastring:\n);gest(str);while(str[i]){if(str[i]='a'&&str[i]='z')str[i]=【11】;fputc(str[i],fp);i++;}fclose(fp);fp=fopen(test.txt,【12】);fgets(str,100,fp);printf(%s\n,str);fclose(fp);}(9)下面程序把从终端读入的文本用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。#includestdio.hFILE*fp;main(){charch;if((fp=fopen(【13】))==NULL)exit(0);while((ch=getchar())!='@')fputc(ch,fp);【14】(10)以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志.请填空