C语言程序设计教程(第三版)李凤霞 第十一章课后习题答案
第十一章 文件
一、单项选择题
1、在进行文件操作时,写文件的一般含义是( )。
A)将计算机内存中的信息存入磁盘 B)将磁盘中的信息存入计算机内存
C)将计算机CPU中的信息存入磁盘 D)将磁盘中的信息存入计算机CPU
2、C语言中标准输入文件stdin是指( )。
A)键盘 B)显示器 C)鼠标 D)硬盘
3、系统的标准输出文件stdout是指( )。
A)键盘 B)显示器 C)鼠标 D)硬盘
4、在高级语言中对文件操作的一般步骤是( )。
A)打开文件-操作文件-关闭文件 B)操作文件-修改文件-关闭文件
C)读写文件-打开文件-关闭文件 D)读文件-写文件-关闭文件
5、要打开一个已存在的非空文件“file”用于修改,正确的语句是( )。
A)fp=fopen(“file”,“r”); B)fp=fopen(“file”,“a+”);
C)fp=fopen(“file”,“w”); D)fp=fopen(“file”,“r+”);
6、以下可作为函数fopen中第一个参数的正确格式是( )。
A)c:user\text.txt B)c:\user\text.txt
C)“c:\user\text.txt” D)“c:\user\text.txt”
7、若执行fopen函数时发生错误,则函数的返回值时( )。
A)地址值 B)0 C)1 D)EOF
8、为了显示一个文本文件的内容,在打开文件时,文件的打开方式应当时( )。
A)“r+” B)“w+” C)“wb+” D)“ab+”
9、若要fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该是( )。
A)“ab+” B)“wb+” C)“rb+” D)“ab”
10、在C语言中,从计算机内存中将数据写入文件中,称为( )。
A)输入 B)输出 C)修改 D)删除
11、C语言可以处理的文件类型是( )。
A)文本文件和数据文件 B)文本文件和二进制文件
C)数据文件和二进制文件 D)以上答案都不对
12、下列关于文件的结论中正确的是( )。
A)对文件操作必须先关闭文件 B)对文件操作必须先打开文件
C)对文件操作顺序没有统一规定 D)以上三种答案都不完全
13、当顺利执行了文件关闭操作时,fclose函数的返回值是( )。
A)-1 B)TRUE C)0 D)1
14、使用fgetc函数,则打开文件的方式必须是( )。
A)只读 B)追加 C)读或读/写 D)答案B和C正确
15、若调用fputc函数输出字符成功,七返回值是( )。
A)EOF B)1 C)0 D)输出的字符
16、利用fseek函数可以( )。
A)改变文件的位置指针 B)实现文件的顺序读写
C)实现文件的随机读写 D)以上答案均正确
17、执行fopen函数时,ferror函数的初值是( )。
A)TRUE B)-1 C)1 D)0
二、填空题
1、在C程序中,数据可以以________和________两种形式的代码存放。(ASCII 二进制)
2、若已定义pf是一个FILE类型的文件指针,已知待输出的文本文件的路径和文件名是A:;则要使佩服指向文件的打开语句是_______________________________。
(pf=fopen(“A:\zh04\data\txfile.dat”,“r”);
3、若fp已经指向一个指定的文件,则将字符变量ch中的字符输出到高文件中,可以用语句有________ 、 ________ 、________ 和 ________ 。
4、feof函数可以用于________和________文件,它用来判断即将读入的是否为_______,若是,函数返回值为________。(ASCII 二进制 文件结束标志 非0)
三、编程题
1、 某班有N个学生,每个学生有5门课的成绩。从键盘输入每个学生的学号、姓名和各门课的成绩,然后计算出每门课全班的平均成绩及每个学生的平均成绩,并将所有数据存放再磁盘文件ABC中。文件结构有编程者自己设计。
解:#include “stdio.h”
main()
{FILE *fp;
int num,mark[5],i,sum,n=0;
float av,t[5]={0};
char name[20];
if((fp=fopen(“abd.txt”,“w”))==NULL) /打开数据文件/
{printf(“Cannot open file\n”);
exit(0);}
printf(“input num:”);
scanf(“%d”,&num); /输入第一各学生学号/
while(num>0)
{printf(“Input neme:”);
scanf(“%s”,name); /输入姓名/
printf(“Input marks for 5 course:\n”);
sum=0;
for(i=0;i<5;i++) /输入5门课成绩/
{scanf(“%d”,&mark[i]);
sum=sum+mark[i];
t[i]=t[i]+mark[i]; /累计各课成绩总分/
}
av=sum/5,n++; /计算每个学生平均分,统计学生人数/
fprintf(fp,“%5d,%s”,num,name); /学号、姓名写入文件/
for(i=0;i<5;i++) /某个学生各科成绩和平均分写入文件/
fprintf(fp,“,%d”,mark[i]);
fprintf(fp,“,%6.2f\n”,av);
printf(“Input num:”);
scanf(“%d”,&num); /输入下一个学生学号/
}
fprintf(fp,“\n”);
for(i=0;i<5;i++) /输出全班各科平均分/
fprintf(fp,“%7.2f”,t[i]/n);
fclose(fp);
}
/p360_1.c/
#define N 6
#include “stdio.h”
main()
{int i,j,n,sc[N][5];
FILE *fp;
char xm[10];
for(i=0;i<N;i++)
{scanf(“%d%s”,&n,xm);
for(j=0;j<5;j++)
scanf(“%d”,&sc[i][j]);
}
fp=fopen(“abc.txt”,“w”);
for(i=0;i<N;i++)
fprintf(fp,“%5d%s%4d%4d%4d%4d%4d\n”,n,xm,sc[i][0],sc[i][1],sc[i][2],sc[i][3],sc[i][4]);
fclose(fp);
}
/p360_1a.c/
#include “stdio.h”
main()
{FILE *fp;
int num,mark[5],i,sum,n=0;
float av,t[5]={0};
char name[20];
if((fp=fopen(“abd.txt”,“w”))==NULL)
{printf(“Cannot open file\n”);
exit(0);}
printf(“input num:”);
scanf(“%d”,&num);
while(num>0)
{printf(“Input neme:”);
scanf(“%s”,name);
printf(“Input marks for 5 course:\n”);
sum=0;
for(i=0;i<5;i++)
{scanf(“%d”,&mark[i]);
sum=sum+mark[i];
t[i]=t[i]+mark[i];
}
av=sum/5,n++;
fprintf(fp,“%5d,%s”,num,name);
for(i=0;i<5;i++)
fprintf(fp,“,%d”,mark[i]);
fprintf(fp,“,%6.2f\n”,av);
printf(“Input num:”);
scanf(“%d”,&num);
}
fprintf(fp,“\n”);
for(i=0;i<5;i++)
fprintf(fp,“%7.2f”,t[i]/n);
fclose(fp);
}
2.从键盘输入一文本文件,将该文本写入磁盘文件disk.txt中,统计磁盘文件中的字母、数字、空白和其它字符的个数,要求:
1)将统计结果显示到屏幕上;
2)将输入的文件输出到打印机上;
3)将统计结果写入磁盘文件total.txt中。
参考程序:(未考虑输出到打印机)
/P360_2.c/
#define M 5
#define N 200
#include “stdio.h”
main()
{char s[M][N];
int i,j,dd,cd,sp,other;
FILE *fp1,*fp2;
dd=cd=sp=other=0;
fp1=fopen(“disk.txt”,“w”);
for(i=0;i<M;i++)
{gets(s[i]);
fputs(s[i],fp1);
for(j=0;j<strlen(s[i]);j++)
if(s[i][j]>=‘0’&&s[i][j]<=‘9’)dd++;
else if(s[i][j]>=‘A’&&s[i][j]<=‘Z’)cd++;
else if(s[i][j]>=‘a’&&s[i][j]<=‘z’)cd++;
else if(s[i][j]==32)sp++;
else other++;
}
fp2=fopen(“total.txt”,“w”);
fprintf(fp2,“cd=%d,dd=%d,sp=%d,other=%d\n”,cd,dd,sp,other);
printf(“cd=%d,dd=%d,sp=%d,other=%d\n”,cd,dd,sp,other);
fclose(fp1);fclose(fp2);
}
3.已有一个存放数千种仓库物质信息的文件CK,每个信息元素含两个内容:物质编号kno和库存量KNOM。请编程通过检查全库物质的库存量,建立一个新的文件XK,它包含所有库存量大于100的物质的编号和库存量。
参考程序:
/p360_3.c/
#include “stdio.h”
main()
{int n,m;
FILE *fp1,*fp2;
fp1=fopen(“ck.txt”,“r”);
fp2=fopen(“xk.txt”,“w”);
while(feof(fp1)==0)
{fscanf(fp1,“%d,%d”,&n,&m);
printf(“%4d%4d\n”,n,m);
if(m>100)fprintf(fp2,“%d,%d\n”,n,m);
}
fclose(fp1);fclose(fp2);
}
4、已知一个学生的数据库包含如下信息:学号(6为整数)、姓名(3个字符)、年龄(2为整数)和住址(10个字符),请编写程序由键盘输入10个学生的数据,将其输出到磁盘文件中;然后再从该文件中读取这些数据并显示在屏幕上。
/p361_4.c/
#include “stdio.h”
#define N 5
struct stud
{char num[6];
char name[4];
int age;
char addr[10];
};
main()
{int n=0;
struct stud st[N];
FILE *fp;
fp=fopen(“xssj.txt”,“w+”);
printf(“num[6],name[3],age,addr[10]:\n”);
while(n<N)
{scanf(“%s%s%d%s”,st[n].num,st[n].name,&st[n].age,st[n].addr);
fwrite(&st[n],sizeof(st[n]),1,fp);
n++;
}
rewind(fp);n=0;
while(n<N)
{fread(&st[n],sizeof(st[n]),1,fp);
printf(“%s,%s,%d,%s\n”,st[n].num,st[n].name,st[n].age,st[n].addr);
n++;
}
fclose(fp);
}
5、已知有两个有序的整数文件F和G,请编一程序,将它们合并为一个新的有序的文件。
/p361_5.c/
#include “stdio.h”
main()
{FILE *p1,*p2;
int a[10],b[10],c[20],k,n1,n2,i,j;
p1=fopen(“f.txt”,“r”);
p2=fopen(“g.txt”,“r”);
n1=0;
fscanf(p1,“%d,”,&k);
while(feof(p1)==0)
{a[n1++]=k;
fscanf(p1,“%d,”,&k);
}
n2=0;
fscanf(p2,“%d,”,&k);
while(feof(p2)==0)
{b[n2++]=k;
fscanf(p2,“%d,”,&k);
}
fclose(p1),fclose(p2);
k=0;i=0;j=0;
while(i<n1) c[k++]=a[i++];
while(j<n2) c[k++]=b[j++];
for(i=0;i<n1+n2-1;i++)
for(j=0;j<n1+n2-i-1;j++)
if(c[j]<c[j+1]){k=c[j];c[j]=c[j+1];c[j+1]=k;}
p1=fopen(“h.txt”,“w”);
for(i=0;i<n1+n2;i++)
fprintf(p1,“%4d”,c[i]);
fclose(p1);
}
6、读入指定的C源程序文件,从文件中的单词中检索出六种C语言的关键字:if、char、int、else、while、和return。统计并输出每个关键字在文件中出现的次数。规定:C源程序文件中的单词是一个空格、’\t’或’\n’
结束的字符串。
C语言程序设计教程(第三版)李凤霞 第十一章课后习题答案相关推荐
- 《Python语言程序设计》王恺 机械工业出版社 第六章课后习题答案
第六章 字符串 6.5 课后习题 (1)Python 中,创建字符串时,可以使用单引号.双引号和三引号 (2)Python 中,使用字符串的 split 方法可以按照指定的分隔符对字符串进行切割,返回 ...
- 《Python语言程序设计》王恺 机械工业出版社 第五章课后习题答案
第五章 序列.集合和字典 5.8 课后习题 (1)Python 中,通过列表中的 index 方法可以根据指定值查找第一个匹配的列表元素 的位置. (2)Python 中,通过列表中的 insert ...
- 《Python语言程序设计》王恺 机械工业出版社 第四章课后习题答案
第四章 面向对象 4.5 课后习题 (1)类和对象的关系即数据类型与变量的关系,类规定了可以用于存储什么数据,而对象用于实际存储数据,每个对象可存储不同的数据 (2)类中包含属性和方法.属性对应一个类 ...
- 《Python语言程序设计》王恺 机械工业出版社 第七章课后习题答案
第七章 I/O编程与异常 7.7 课后习题 (1)利用 os 模块查看当前系统的名字,应当使用 os.name . (2)利用 os 模块获取当前系统平台路径的分隔符,应当使用 os.sep . (3 ...
- c语言程序设计教程第三版答案9.5,C语言程序设计-第5-9章习题解答.ppt
C语言程序设计-第5-9章习题解答 华中科技大学计算机学院 C语言程序设计 第5-9章 部分习题解答 作业中问题较多的习题 第5章5.4(2) 第6章6.1,6.3,6.5(6),6.8 第7章无 第 ...
- python程序设计与算法基础江红答案_《Python程序设计与算法基础教程(第二版)》江红 余青松,第十一章课后习题答案...
推荐阅读 <Python程序设计与算法基础教程(第二版)>江红 余青松 全部章节的课后习题,上机实践,课后答案,案例研究 文章目录 一些知识点总结和几个例题 选择题:1~5 填空题:1~8 ...
- java语言程序设计教程第三版答案,看完跪了
01 如何理解高并发? 高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验. 我们常见的高并发场景有:淘宝的双11.春运时的抢票 ...
- Java面向对象程序设计(第二版)袁绍欣 第九章课后习题答案
线程和进程的联系和区别是什么? 区别: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分配的基本单位. ...
- 《计算机组成原理(微课版)》第2章课后习题答案
2.1解释下列名词 真值:正号和负号分别用"+"和"-"表示,数据位保持二进制值不变的数据表示方法. 机器码:又称机器数,数据在机器中的表示形式,是正负符号数码 ...
最新文章
- python inspect模块
- redis(7)、redis持久化
- 2014 UESTC Training for Data Structures B - 母仪天下
- silverlight5
- 实现一个简单的前端水印
- ES6技巧和窍门,使您的代码更简洁,更短且更易于阅读!
- linux_manjaro常用软件安装
- ###【Python版本】股票行情API:获取A股主流指数成分股st股和次新股日内资金净流入A股个股实时盘口/历史行情数据基本财务数据/现金流量数据央行货币供应数据融资融券历史数据的Api
- Git 常用回滚撤销命令总结
- 网络系统管理赛项之Debian七. 2021年全国职业院校技能大赛将挑选各省1人或1组队伍参赛
- qq发文件大小上限_QQ邮箱上传附件一般有限制吗?最大能发送多大的文件
- 离线数仓DIM层和DWD层,联表后表和字段命名规则
- 涂抹mysql 完整_涂抹MYSQL-跟着三思一步一步学MySQL
- CSS3D导航栏翻转效果
- 华为智慧屏 鸿蒙UI 适配荣耀,鸿蒙OS首秀 荣耀智慧屏发布,仅3799元起
- 水质在线监测系统方案
- java jtextarea.setfont,Java JTextArea用法
- 国产实时操作系统+intel x86/龙芯平台超边缘计算机方案
- 中国最新省市区sql数据
- matplotlib基础知识(图形绘制坐标轴、标签、刻度字体设置图例脊柱移动风格样式多图布局双轴显示)(1)
热门文章
- ajax里数组添加数据,小笔记(一):ajax传递数组及将ajax返回数据赋值
- 西红柿炒鸡蛋的神奇功效
- 多粒度和多尺度的区别
- PNP+NMOS用于充电的原理解释
- 基于AForge的C#摄像头视频录制
- STC89系列单片机看门狗的使用及应用程序
- Android系统USB读卡器
- X86汇编学习小结----cmp 完整版本
- 前端萌新看过来了—— 0基础1小时vue入门到实战
- You can't specify target table 'sys_user_function' for update in FROM clause