C语言习题答案-9
【习题9】一、选择题1.已知函数fwrite的一般调用形式是fwrite(buffer,size,count,fp)其中buffer代表的是B。A.一个指向要输出文件的文件指针B.存放输出数据项的存储区C.要输出数据项的总数D.存放要输出的数据的地址或指向此地址的指针2.若调用fputc()的函数输出字符成功,则其返回值是D。A.EOFB.1C.0D.输出的字符3.标准函数fgets(s,n,f)的功能是D。A.从文件f中读取长度为n的字符串存入指针s所指的内存B.从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C.从文件f中读取n个字符串存入指针s所指的内存D.从文件f中读取长度为n-1的字符串存入指针s所指的内存4.若fp是指向某文件的指针,且已读到该文件的末尾,则C语言库函数feof(fp)的返回值是A。A.EOFB.-1C.非零值D.NULL5.有以下程序:#include
voidmain(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%dn",i);fprintf(fp,"%dn",j);fclose(fp);fp=fopen("d1.dat","r");fp=fscanf(fp,"%d%d",&k,&n);printf("%d%dn",k,n);fclose(fp);}程序运行后的输出结果是A。A.2030B.2050C.3050D.3020二、编程题1.从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“text”中保存。输入的字符串以“!”结束。#include#include#includevoidmain(){FILE*fp;charstr[100];inti=0;if((fp=fopen("test","w"))==NULL){printf("Cannotopenthefilen");nexit(0);}printf("Inputastring:n");gets(str);while(str[i]!='!'){if(str[i]>='a'&&str[i]<='z')str[i]=str[i]-32;fputc(str[i],fp);i++;}fclose(fp);fp=fopen("test","r");fgets(str,strlen(str)+1,fp);printf("%sn",str);fclose(fp);}2.有5个学生,每个学生有3门课的成绩,从键盘输入学生数据(包括学生号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。分析:将程序分成3部分,输入、写文件、从文件输出。本题可采用结构体变量存放学生数据,对文件读写数据可分别采用fread()和fwrite()函数。#includestructstudent/*定义结构体变量*/{charnum[10];charname[8];intscore[3];floatave;}stu[5];voidmain()/*主程序*/{inti,j,sum;FILE*fp;for(i=0;i<5;i++)/*输入*/{/*输入学生的姓名、学号*/printf("nInputscoreofstudent%d:n",i+1);printf("NO.:");scanf("%s",stu[i].num);printf("name:");nscanf("%s",stu[i].name);sum=0;for(j=0;j<3;j++)/*输入第j门成绩*/{printf("score%d:",j+1);scanf("%d",&stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/3.0;/*求平均分*/}/*将数据写入文件stud*/fp=fopen("stud","w");for(i=0;i<5;i++)if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("Filewriteerrorn");fclose(fp);/*检查文件内容,从文件中读数据并显示在屏幕上*/fp=fopen("stud","r");for(i=0;i<5;i++){fread(&stu[i],sizeof(structstudent),1,fp);printf("%s,%s,%d,%d,%d,%6.2fn",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);}fclose(fp);}3.将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu_sort”中。分析:本题分3个步骤解决:1)从源文件读数据到结构体变量并输出到屏幕。2)数据排序3)将排好序的数据写入文件并输出到屏幕。#include#defineN10structstudent{charnum[10];charname[8];intscore[3];floatave;}st[N],temp;/*st、temp均为结构体变量*/voidmain(){FILE*fp;ninti,j,n;/*从源文件stud中读数据到结构体变量,并输出到屏幕*/if((fp=fopen("stud","r"))==NULL){printf("Cannotopenthefile.");exit(0);}printf("nfile'stud':");for(i=0;fread(&st[i],sizeof(structstudent),1,fp)!=0;i++){printf("n%8s%8s",st[i].num,st[i].name);for(j=0;j<3;j++)printf("%8d",st[i].score[j]);printf("%10.2f",st[i].ave);}fclose(fp);n=i;/*n值为总学生个数*/for(i=0;i
查看更多