MSE C语言第十一章习题.doc_第1页
MSE C语言第十一章习题.doc_第2页
MSE C语言第十一章习题.doc_第3页
MSE C语言第十一章习题.doc_第4页
MSE C语言第十一章习题.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

考研网 /下面是研究生考试网为报考GCT软件工程硕士的考生整理的MSE考研复习备考资料。希望这些资料能够给考生一定帮助。在此,预祝考生复习备考顺利!第十二章文件一、单选题(18题)1、若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是 A. EOF B. 0 C. 非零值 D. NULL2、在C程序中,可把整型数以二进制形式存放到文件中的函数是 A. fprintf函数 B. fread函数 C. fwrite函数 D. fputc函数 3、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是 A. fopen(A:userabc.txt,r) B. fopen(A:userabc.txt,r+)C. fopen(A:userabc.txt,rb) D. fopen(A:userabc.txt,w)4、以下叙述中错误的是_A. 二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B. 在程序结束时,应当用fclose函数关闭已打开的文件 C. 利用fread函数从二进制文件中读数据,可以用数组名给数组中所有元素读入数据 D. 不可以用FILE定义指向二进制文件的文件指针5、C语言中标准输入文件stdin是指 A. 键盘 B. 显示器 C. 软盘 D. 硬盘6、C语言中标准输出文件stdout是指 A. 键盘 B. 显示器 C. 软盘 D. 硬盘7、C语言中对文件操作的一般步骤是 A. 打开文件操作文件关闭文件 B. 打开文件关闭文件操作文件 C. 打开文件读文件写文件 D. 读文件写文件关闭文件8、以下可作为函数fopen中第一个参数的正确格式是 A. cusertext.txt B. cusertext.txtC. c:usertext.txt D. c:usertext.txt9、若执行fopen函数时发生错误,则函数的返回值是 A. 地址值 B. 0 C. 1 D. EOF10、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则使用文件方式字符串应是 A. ab+ B. wb+ C. rb+ D. ab11、若以“a+”方式打开一个已存在的文件,则以下叙述正确的是 A. 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作B. 文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作添加和读操作C. 文件打开时,原有文件内容被删除,位置指针移到文件末尾,可作添加和读操作D. 文件打开时,原有文件内容被删除,位置指针移到文件开头,可作添加和读操作12、已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是 A. 一个整型变量,代表要读入的数据项总数B. 一个文件指针,指向要读的文件C. 一个指针,指向要读入数据的存放地址D. 一个存储区,存放要读的数据项13、以下fread函数的调用形式中,参数类型正确的是 A. fread (unsigned size, unsigned n, char *buffer, FILE *fp) B. fread (char *buffer , unsigned size, unsigned n, FILE *fp)C. fread (unsigned size, unsigned n, FILE *fp, char *buffer)D. fread (FILE *fp, unsigned size, unsigned n, char *buffer)14、函数调用语句:fseek (fp, 10L, 2); 的含义是 A. 将文件位置指针移到距离文件头10个字节位置处B. 将文件位置指针从文件尾处向后退10个字节C. 将文件位置指针从当前位置向后移10个字节D. 将文件位置指针从当前位置向前移10个字节15、函数rewind的作用是 A. 将文件位置指针重新返回文件的开始B. 将文件位置指针指向文件中所要求的特定位置C. 将文件位置指针指向文件的尾部D. 将文件位置指针自动移向下一个字符位置16、函数ftell的作用是 A. 移动流式文件的位置指针 B. 初始化流式文件的位置指针C. 得到流式文件的位置指针 D. 以上答案均不正确17、设有数组定义语句:int a10; 若要将这些元素值保存在磁盘中,以下错误的形式是 。 A. fwrite ( a, sizeof (int ), 10 , fp); B. fwrite ( a, 2, 10, fp); C. fwrite ( a, 2*10 , 1 , fp); D. fwrite ( a, sizeof (int ), 1, fp); 18、fprintf函数的正确调用形式是 A. fprintf (文件指针, 格式字符串, 输出表列)B. fprintf (文件指针, 格式字符串, 输入表列)C. fprintf (格式字符串, 输出表列, 文件指针)D. fprintf (格式字符串, 输入表列, 文件指针)二、读程序,写运行结果(5题 一般题:提高题=2:1)一般题1、下面的程序执行后,文件test中的内容是 #include void fun (char *fname., char *st) FILE *myf; int i; myf=fopen(fname, w ); for(i=0; istrlen(st); i+) fputc(sti, myf); fclose(myf);main() fun (test, new world); fun (test, hello,); 2、有如下程序,若文本文件f1.txt中原有内容为:good,则运行程序后文件f1.txt中的内容为 #include main ( ) FILE *fp1; fp1=fopen (f1.txt,w); fprintf(fp1,abc); fclose(fp1); 3、下面的程序执行后,文件f2.txt中的内容是 #include void main ( ). FILE *fp; char *s1=”first”, *s2=”second”;if(fp=fopen(f2.txt,wb+)=NULL) printf(cannot open the filen);exit(0);.fwrite( s2, 6, 1, fp);fseek( fp,0L, SEEK_SET);fwrite (s1, 5, 1, fp);fclose (fp); 4、下面的程序的运行结果是 #include void main() FILE *fp; int i, n;if(fp=fopen(f3.txt,w+)=NULL) printf(cannot open the filen); exit(0);. for( i=1; i=10; i+) fprintf ( fp, “%3d”, i);for( i=0; i5; i+) fseek (fp, i*6L,SEEK_SET); fscanf ( fp, “%3d”, &n); printf (“%3d”, n); printf (“n”);fclose (fp);提高题5、假设以下程序执行前文件gg.txt的内容为:sample,程序运行后的结果是 #include void main() FILE *fp; long position; fp=fopen(“gg.txt”, “w”); position=ftell(fp); printf(“position=%ldn”, position); fprintf(fp, “sample data”); position=ftell(fp); printf(“position=%ldn”, position); fclose(fp);三、完善程序(10题 一般题:提高题=2:1)一般题1、下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新文件中。 #include stdio.h FILE *fp; main ( ) char ch;if( (fp=fopen ( “bi.dat”, (1) ) )= = NULL) exit(0);while( (ch=getchar( ) !=) fputc (ch, (2 ) );fclose(fp);2、以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中形成文本文件,并将字符的个数写到文件尾部。 #include main( ) FILE *fp; char ch, fname32; int count=0; printf(Input the filename : );scanf(%s, fname); if(fp=fopen( (1) , w+)=NULL) printf(Cant open file:%s n, fname); exit(0); printf(Enter data:n); while(ch=getchar()!=#) fputc(ch, fp); count+; fprintf( (2) , n%dn, count); fclose(fp); 3、以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。 FILE *myf; ling f1;myf= (1) (test.t,rb);fseek (myf, 0, (2) ); f1=ftell (myf);fclose (myf);printf (%dn,f1);4、以下程序用来统计文件中字符个数。 #include stdio.h main() FILE *fp; long num=0L; if(fp=fopen(fname.dat,r)=NULL) pirntf(Open errorn); exit(0); while( (1) ) fgetc(fp); num+; printf(num=%1dn, (2) ); fclose(fp); 5、以下程序求 的三个近似值。当精度分别为:10-6、10-8、10-10时,输出对应的s和i的值。#include float f(float e, int *n) float s, m, t;t=1.0/2/1; s=t; m=1; while( te) m+; t=t/2/m; s+=t; *n=m; return s;main() float s1, s2, s3; FILE *fp; int n1, n2, n3; s1=f(1e-6,&n1); s2=f(1e-8,&n2); s3=f(1e-10,&n3); fp=fopen(“z6.out”,”w”); fprintf(fp,”s1=%f i=%dn”, (1) , n1); fprintf(fp,”s2=%f i=%dn”, (2) , n2);fprintf(fp,”s3=%f i=%dn”, (3), n3); fclose(fp);6、以下程序的功能是从键盘输入一个字符串,将该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。(1) main ( ) FILE *fp; char str100; int i=0; if(fp=fopen(“test.txt”, (2) )=NULL) printf(“cant open this file.n”); exit(0); gets(str);while(stri) if(stri=a&stri=z) stri= (3) ; fputc(stri,fp); i+;fclose(fp);fp=fopen(“test.txt”, (4) );fgets(str, 100, fp); printf(“%sn”,str);fclose(fp); 7、本程序从一个文件from.txt中读出内容,除去其中的数字后写入另一文件to.txt。 #include main ( ) FILE *fr, *to; int cc;if (fr=fopen ( (1) , “r”) = NULL) printf( Can not open file- form.txt ); return 1; if ( (to=fopen( (2) , “w”) = NULL _) printf( Can not open file- to.txt ); return 1; while ( ( cc = (3) ) != EOF ) if ( cc9 ) (4) ; fclose(fr), fclose(to); 提高题8、以下程序从一个二进制文件中读入结构体数据,并把结构体数据显示在屏幕上。#include struct rec int num; float total;void main() FILE *f; f=fopen (bin.dat,rb); eout(f); fclose(f);void reout( (1) ) struct rec r; while (!feof(f) fread(&r., (2) , 1, f); printf(%d.%fn, (3) ); 9、以下程序的功能是用“追加”的形式打开f4.txt查看文件指针的位置;然后向文件中写入data再察看文件指针的位置。其中ftell(*FILE)返回long型的文件指针位置。程序执行前gg.txt内容为:aaaaaa。 #include void main(void) (1) long p; fp=fopen( (2) ); p=ftell ( fp ); printf(p=%ldn, p); fprintf( fp, (3) ); p=ftell (fp); printf(p=%ldn, p); fclose(fp); 10、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。函数SortDat()的功能是按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,函数WriteDat()是把结果输出到文件OUT2.DAT中。 #include #include #include #include #include#define MAX 100typedef struct char dm5; /*产品代码*/ char mc11; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/ PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat() int i, j; PRO swap; for(i=0; iMAX-1; i+) for(j=i+1; jsellj.je ) swap=selli; selli=sellj; sellj=swap; if(strcmp(selli.dm,sellj.dm)0&selli.je=sellj.je) swap=selli; selli=sellj; sellj=swap; void main() ReadDat ( ); SortDat ( ); WriteDat ;void ReadDat ( ) FILE *fp; char str80,ch11; int i;fp=fopen( (2) , r);for(i=0; i100; i+)fscanf (fp, “%s%s%d%d%ldn”, selli.dm, selli.mc, &selli.dj, &selli.sl, &selli.je);fclose(fp);void WriteDat(void) FILE *fp; int i;fp=fopen( (3) , w);for(i=0;i100;i+)fprintf(fp,%s %s %4d %5d %101dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fclose(fp);四、编程题 (5题 一般题:提高题=2:1)一般题1、编写一个程序,从键盘输入一个字符串,将大写字母全部转换成小写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。 2、编写一个程序,将从键盘上读入的10个整数以二进制方式写入名为bi.dat的新文件中。3、编写一个程序,从键盘输入3个学生的数据(包括学生学号、姓名、年龄、通信地址),将它们存入文件student;然后再从文件中读出数据,显示在屏幕上。4、编写程序,有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,然后将原有的数据和计算出的平均分数存放在磁盘文件stud中。提高题5、编写程序,读入磁盘上语言源程序文件test8.c,删去程序中的注释后显示。 第十二章文件参考答案一、单选题(18题)1.C 2.C 3.B 4.A 5.A 6.B 7.A 8.D 9.B 10.B11.A 12.C 13.B 14.B 15.A 16.C 17.D 18.A二、读程序,写运行结果(5题 一般题:提高题=2:1)一般题1. hello 2. abc3.firstd 4. 1 3 5 7 9提高题5. position=0 position=11三、完善程序(10题 一般题:提高题=2:1)一般题1.(1) “w” (2) fp2. (1) fname (2) fp3. (1) fopen (2) SEEK_END4. (1) !feof (fp) (2) num5. (1) s1 (2) s2 (3) s36. (1) #include (2) “w” (3) stri-32 (4) “r”7. (1) “from.txt” (2) “to.txt” (3) fgetc( fr ) (4) fputc(cc, to)提高题8. (1) FILE *f (2) sizeof (struct rec) (3) r.num, r.total9. (1) FILE *fp; (2) “f4.txt”, “a” (3) “%s”, “data”10. (1) selli.je (2) IN.DAT (3) OUT2.DAT四、编程题 (5题 一般题:提高题=2:1)一般题1. 参考答案 #include stdio.hmain()FILE *fp; char str100, filename10; int i=0; if(fp=fopen(test,w)=NULL) printf(cannot open the filen); exit(0); printf(please input a string:n); gets(str); while(stri!=!) if(stri=A&stri=Z) stri=stri+32; fputc(stri,fp); i+; fclose(fp); 2. 参考答案#include FILE *fp;main() int i, j;if( fp=fopen(bi.dat, wb ) = NULL )exit (0);for( i=0;i10;i+ ) scanf(%d, &j );fwrite(&j, sizeof(int), 1, fp);fclose( fp);3. 参考答案#include #define SIZE 3struct student long num;char name10;int age;char address10; stuSIZE, out;void fsave ( ) FILE *fp;int i;if(fp=fopen(student, wb)= NULL) printf(Cannot open file.n);exit(1); for(i=0;iSIZE;i+) if(fwrite(&stui,sizeof(struct student),1,fp) != 1 )printf(File write error.n); fclose(fp); main() FILE *fp;int i;for(i=0;iSIZE;i+) printf(Input student %d:,i+1);scanf(%ld%s%d%s,&stui.num,,&stui.age,stui.address);fsave(); fp = fopen(student,rb); printf( No. Name Age Addressn);while(fread(&out,sizeof(out),1,fp) printf (%8ld %-10s %4d %-10sn, out.num,,out.age,out.address);fclose(fp); 4. 参考答案#include stdio.hstruct student char num6; char name8; int score3; float avr; stu5;main()int i,j,sum; FILE *fp; for(i=0;i5;i+) printf(n please input No. %d score:n,i); printf(stuNo:); scanf(%s,stui.num); printf(name:); scanf(%s,); sum=0; for(j=0;j3;j+) printf(score %d.,j+1); scanf(%d,&stui.scorej); sum+=stui.scorej; stui.avr=sum/3.0;fp=fopen(stud,w);for(i=0;i5;i+) if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write errorn);fclose

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论