您好,欢迎访问三七文档
延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组1第12章文件12.1选择题12.1系统的标准输入文件是指______。A)键盘B)显示器C)软盘D)硬盘12.2以下可作为函数fopen中第一个参数的正确格式是______。A)c:user\text.txtB)c:\user\text.txtB)“c:\user\text.txt”D)“c:\\user\\text.txt”12.3若招待fopen函数时发生错误,则函数的返回值是______。A)地址值B)0C)1D)EOF12.4若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是______。12.5若以”a+”方式打开一个已存在的文件,则以下叙述正确的是______。A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作。B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作。C)文件打开时,原有文件内容被删除,只可作写操作。D)以上各种说法皆不正确。12.6当顺利执行文件关闭操作时,fclose函数的返回值是______。A)–1B)TRUEC)0D)112.7已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是______。A)一个整型变量,代表要读入的数据总数B)一个文件指针,指向要读的文件C)一个指针,指向要读入的数据存放的地址D)一个存储区,存放要读的数据项12.8若有以下定义和说明:#include“stdio.h”structstd{charnum[6];charname[8];floatmark[4];}a[30];FILE*fp;该文件中以二进制形式存有10个班的学生数据,且已正确打开,文件指针定位于文件开头。若要从文件中读出30个学生的数据放入a数组中,以下不能实现此功能的语句是______。A)for(i=0;i30;i++)fread(&a[i],sizeof(structstd),1L,fp);延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组2B)for(i=0;i30;i++,i++)fread(a+i,sizeof(structstd),1L,fp);C)fread(a,sizeof(structstd),30L,fp);D)for(i=0;i30;i++)fread(a[i],sizeof(structstd),1L,fp);12.9fscanf函数的正确调用形式是______。A)fscanf(fp,格式字符串,输出列表);B)fscanf(格式字符串,输出列表,fp);C)fscanf(格式字符串,文件指针,输出列表);D)fscanf(文件指针,格式字符串,输入列表);12.10fwrite函数的一般调用形式是______。A)fwrite(buffer,count,size,fp);B)fwrite(fp,size,count,buffer);C)fwrite(fp,count,size,buffer);D)fwrite(buffer,size,count,size,fp);12.11fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是______。A)只写B)追加C)读或写D)答案B和C都正确12.12若调用fputc函数输出字符成功,则其返回值是______。A)EOFB)1C)0D)输出字符12.13设有以下结构体类型:struct{charname[8];intnum;floats[4];}student[50];并且结构体数组student中的元素都已赋值,若要将这些元素写到硬盘文件fp中,以下不正确的形式是______。A)fwrite(student,sizeof(structst),50,fp);B)fwrite(student,50*sizeof(structst),1,fp);C)fwrite(student,25*sizeof(structst),25,fp);D)for(i=0;i50;i++)fwrite(student+i;sizeof(structst),1,fp);12.14阅读以下程序及对程序功能的描述,其中正确的描述是______。#includestdio.hmain(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfiename:\n”);scanf(“%s”,outfile);if((in=fopen(infile,“r”))==NULL)延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组3{printf(“cannotopeninfile\n”):exit(0);}if((out=fopen(outfile,“w”))==NULL){printf(“cannotopenoutfile\n”):exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}A)程序完成将磁盘文件的在屏幕上显示的功能B)程序写成将两个磁盘文件合二为一的功能C)程序完成将一个磁盘文件复制到另一个磁盘文件中D)程序完成将两个磁盘文件合并且在屏幕上输出12.15下面程序以字符形式读入一个文件,从文件中检索出六种C语言的关键字,并统计,输出每种关键字在文件中出现的次数。为简化运算,程序规定:单词是以空格或’\t’,‘\n’结束的字符串。请从下面对应的一组选项中选出正确的内容填入【】。#includestdio.h#includestring.hFILE*cp;charfname[20],buf[100];intnum;structkey{charword[10];intcount;}keyword[]={“if”,0,“char”,0,“int”,0,“else”,0,“while”,0,“return”,0};char*getword(FILE*fp){inti=0;charc;while((c=getc(fp)!=EOF&&(c==’’||c==’\t’||c==’\n’));if(c==EOF&&c!=’’&&c!=’\t’&&c!=’\n’)elsebuf[i++]=c;while((c=【1】&&c!=’’&&c!=’\t’&&c!=’\n’)buf[i++]=c;buf[i]=’\0’;return(buf);}lookup(char*p){延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组4inti;char*q,*s;for(i=0;inum;i++){q=&keyword[i].word[0];s=p;while(*s&&(*s==*q){【2】;}if(*s==*q){keyword[i].count++;break;}}return;}main(){inti;char*word;printf(“Enterfilename:”);scanf(“%s”,fname)if((cp=fopen(fname,“r”))==NULL){printf(“fileopenerror!\n”);exit(0);}num=sizeof(keyword)/sizeof(structkey);while(【3】)lookup(word);fclose(cp);for(i=0;inum;i++)printf(“keyword=%s,count=%d\n”,keyword[i].word,keyword[i].count);}【1】A)fgetc(fp))!=EOFB)fgetc(fp)==EOFC)fgetc(fp))D)fgetc(fp))EOF【2】A)s++;q++B)s++C)q++D)s=q【3】A)(word==getword(cp))!=NULLB)word==getword(cp)!=NULLC)(word==getword(cp))==NULLD)(word==getword(cp))!=NULL12.16函数调用语句:fseek(fp,-20L,2);的是______。A)将文件位置指针移到距离文件头20个字节处B)将文件位置指针从当前位置向后移动20个字节C)将文件位置指针从文件末尾处向后退20个字节延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组5D)将文件位置指针移到当前位置20个字节处12.17利用fseek函数可实现的操作是______。A)改变文件的位置指针B)文件的顺序读写C)文件的随机读写D)以上答案均正确12.18fseek函数的正确调用形式是______。A)fseek(文件类型指针,起始点,位移量);B)fseek(fp,位移量,起始点);C)fseek(起始量,起始点,fp);D)fseek(起始点,位移量,文件类型指针);12.19函数rewind的作用是______。A)使位置指针重新返回文件的开头B)将位置指针指向文件中所要求的特定位置C)使位置指针指向文件的末尾D)使位置指针自动移到下一个位置12.20函数ftell(fp)的作用是______。A)得到流式文件中的当前位置B)移动流式文件的位置指针C)初始化流式文件的位置指针D)以上答案均正确12.21下面程序实现人员登录。即每当从键盘接收一个姓名,便在文件”member.dat”中进行查找。若此姓名已存在,则显示相应信息;若文件中没有该姓名,则将其存入文件(若文件(若文件“member.dat”在存在,应在磁盘上建立一个新文件)。当输入姓名按回车或处理过程中出现问题时程序结束。请从下面对应的一组选项中选出正确的内容填入【】。#includestdio.hmain(){FILE*fp;intflag;charname[20],data[20];if((fp=fopen(“member.dat”,【1】))==NULL){printf(“Openfileerror\n”);exit(0);}do{printf(“Entername:”);【2】;if(strlen(name)==0)break;strscat(name,“\n”);rewind(fp);flag=1;while(flag&&((fgets(data,30,fp)!=NULL)))if(strcmp(data,name)==0)flag=0;延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组6if(flag)fputs(name,fp);elseprintf(“\tThisnamehasbeenexisted!\n”);}while(【3】);/*读写正确就循环*/fclose(fp);}【1】A)“w”B)“w+”C)“r+”D)“a+”【2】A)fgets(name)B)gets(name)C)scanf(name)D)getc(name)【3】A)ferror(fp)==0B)ferror(fp)==1C)ferror(fp)!=0D)!(ferror(fp)==0)12.22在执行fopen函数的调用时,ferror函数的初值是______。A)TRUEB)–1C)1D)012.23以下read函数的调用形式中,参数类型正确的是______。A)read(intfd,char*buf,intcount)B)read(int*buf,intfd,intcount)C)read(intfd,intcount,char*buf)D)read(intcount,char*buf,intfd)12.24函数lseek用来移动文件的位置指针,其调用形式是______。A)lseek(位移方向,位移量,文件号);B)lseek
本文标题:第12章 文件
链接地址:https://www.777doc.com/doc-3259188 .html