复习题十答案及详细分析
文件 1. 以下叙述中错误的是 A C语言中对二进制文件的访问速度比文本文件快。 B C语言中,随机文件以二进制代码形式存储数据。 C 语句FILE fp;定义了一个名为fp的文件指针。 D C语言中的文本文件以ASCII码形式存储数据。 1) 定义fp的文件指针应为:FILE *fp,所以C选项不正确 2. 有以下程序: #include main() { FILE *fp; int i,k,n; fp=(““,“w+“); for(i=1;i<6;i++) { fprintf(fp,“%d “,i); if(i%3==0) fprintf(fp,“\n“); } rewind(fp); fscanf(fp,“%d%d“, printf(“%d %d\n“,k,n); fclose(fp); } 程序运行后的输出结果是 A 0 0B 123 45C 1 4D 1 2 打开文件,并且使得文件指针fp指向该文件,I的值为1,2,3,4,5时,满足条件2,依次将1,2,3,4,5输入到文件中,并且在I为3时满足(I%3==0),所以输入3之后换行,再输入的4,(fp)使得文件指针fp指到文件的开头,然后将指针的当前位置开始,取两个数到变量k,n中,使得k=123,n=45,因为数据是以间隔符分开的.所以结果是123 45,选B. 3. 以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是 A feof(fp)B ftell(fp)C fgetc(fp)D rewind(fp) fseek(fp,n,SEEK_SET)的作用是使得文件指针移动到文件开始后的的n个字节位置上,此处的n为0,所以就是移动的文件的开始处,这与rewind(fp)作用相同,所以选D. 4. 有如下程序: #include main() { FILE *fp1; fp1=(““,“w“); fprintf(fp1,“abc“); fclose(fp1); } 若文本文件中原有内容为:good,则运行以上程序后文件中的内容为 A goodabcB abcdC abcD abcgood fprintf(fp1,”abc”)是使得abc依次写到指针fp1指向的位置,所以abc覆盖good,所以中的内容变为abcd,选C. 5. 有以下程序: #include main() { FILE *fp;int i,k=0,n=0; fp=(““,“w“); for(i=1;i<4;i++) fprintf(fp,“ %d“,i); fclose(fp): fp=(““,“r“); fscanf(fp,“ %d%d“, printf(“%d %d\n“,k,n); fclose(fp); } 执行后的输出结果是 A 1 2B 123 0C 1 23D 0 0 2) 通过第一个for语句,依次将1,2,3写入到文件中,并且1,2,3之间无间隔符,所以通过fscanf(fp,”%d%d”,将123赋给了k, n为赋值,仍为初始化的值,所以最后的结果为123 0,选B 6. 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节); #include main() { FILE *fp;int i,a[4]={1,2,3,4},b; fp=(““,“wb“); for(i=0;i<4;i++) fwrite( fclose(fp); fp=(““,“rb“); fseek(fp,-2L*sizeof(int),SEEK_END); fread( /*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp); printf(“%d\n“,b); } 执行后的输出结果是 A 2B 1C 4D 3 通过第一个for循环使得数组中的值依次写入文件中,fseek(fp,-2L*sizeof(int),SEEK_END),使得指针移到3所在的字节的首位置,fread(把指针fp所指的值放到变量b中,所以结果是3,选D 7. 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为 A 0B 1C -1D 一个非0的值 因为feof(文件指针)的作用是判断文件是否结束,是则返回1否则返回 0,本题中未遇到文件结束,所以应返回0,选A 8. 下列关于C 语言数据文件的叙述中正确的是 A 文件由ASCII码字符序列组成,C语言只能读写文本文件。 B 文件由二进制数据序列组成,C 语言只能读写二进制文件。 C 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件。 D 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件。 选D.略. 9. 以下叙述中不正确的是 A C语言中的文本文件以ASCII码形式存储数据。 B C 语言中对二进制文件的访问速度比文本文件快。 C C语言中,随即读写方式不适用于文本文件。 D C 语言中,顺序读写方式不适用于二进制文件。 选D.略. 10. 以下程序企图把从终端输入的字符输出到名为的文件中,知道从终端读入字符#号时结束输入和输出操作,但程序有错。 #include main() { FILE *fout; char ch; fout=( , w ); ch=fgetc(stdin); while(ch!= # ) { fputc; ch=fgetc(stdin); } fclose(fout); } 出错的原因是 A 函数调用形式错误B 输入文件没有关闭 C 函数fgetc调用形式错误D 文件指针stdin没有定义 10)选A,中的文件名和打开方式都应该用双引号引起. 11. 有以下程序 #include main() { FILE *fp; int i=20,j=30,k,n; fp=(““,“w“); fprintf(fp,“%d