C++程序设计(第2版)第九章习题解答.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C++程序设计(第2版)第九章习题解答.doc》由会员分享,可在线阅读,更多相关《C++程序设计(第2版)第九章习题解答.doc(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、39第九章 流类库和输入/输出习题第九章 流类库和输入/输出习题一. 本概念与基础知识测试题9.1 填空题9.1.1 在C+中“流”是表示 (1) 。从流中取得数据称为 (2) ,用符号 (3) 表示;向流中添加数据称为 (4) ,用符号 (5) 表示。答案:(1)数据从一个对象到另一个对象的传送(2)提取操作(3)(4)插入操作(5)(stream_extraction operator)(6)”)运算符在缺省情况下是跳过空白(包括空格,制表,backspace和回车等)的,这样拷贝的文件会缺少一些字符。第二,该程序应能确定文件是否拷贝结束。按行进行拷贝,getline()回车换行符并不放在
2、buf中,因此要加一个回车换行符。9.2.9 对文件流,“!”运算符完成什么功能?答:返回状态字state操作非法和操作失败这两位。9.2.10 二进制文件读函数read()能否知道文件是否结束?应怎样判断文件结束?答:读函数并不能知道文件是否结束,可用状态函数int ios:eof()来判断文件是否结束。必须指出系统是根据当前操作的实际情况设置状态位,如需根据状态位来判断下一步的操作,必须在一次操作后立即去调取状态位,以判断本次操作是否有效。9.2.11 由二进制文件和文本文件来保存对象各有什么优点和缺点?答:使用二进制文件,可以控制字节长度,读写数据时不会出现二义性,可靠性高。同时不知格式
3、是无法读取的,保密性好。文件结束后,系统不会再读(见eofbit的说明),但程序不会自动停下来,所以要判断文件中是否已没有数据。使用文本文件来保存对象,操作简单,但谁都可以读取这些数据,无保密性。9.2.12 文件的随机访问为什么总是用二进制文件,而不用文本文件?答:在C+中可以由程序来实现文件指针的移动,从而实现文件的随机访问,即可读写流中任意一段内容。一般文本文件很难准确定位,所以随机访问多用于二进制文件。9.2.13 怎样使用istream和ostream的成员函数来实现随机访问文件?答:在ios类中说明了一个公有枚举类型:enum seek_dirbeg=0,/文件开头cur=1,/文
4、件指针的当前位置end=2/文件结尾;istream类中提供了如下三个成员函数:istream&istream:seekg(streampos);/指针直接定位istream&istream:seekg(streamoff, ios:seek_dir);/指针相对定位long istream:tellg();/返回当前指针位置seekg(streamoff,ios:seek_dir)应用最广,如:datafile.seekg(-20L,ios:cur);表示将文件定位指针从当前位置向文件头部方向移20个字节。datafile.seekg(20L,ios:beg);表示将文件定位指针从文件头向文
5、件尾方向移20个字节。datafile.seekg(-20L,ios:end);表示将文件定位指针从文件尾向文件头方向移20个字节。tellg()和seekg()往往配合使用。ostream类也提供了三个成员函数管理文件定位指针,它们是:ostream&ostream:seekp(streampos);ostream&ostream:seekp(streamoff,ios:seek_dir);long ostream:tellp();定位指针只有一个但函数有两组,这两组个函数功能完全一样。二. 编程与综合练习题9.3 编程实现以下数据输入输出:a) 以左对齐方式输出整数,域宽为12;b) 以八
6、进制、十进制、十六进制输入输出整数;c) 实现浮点数的指数格式和定点格式的输入输出,并指定精度;d) 把字符串读入字符型数组变量中,从键盘输入,要求输入串的空格也全部读入,以回车换行符结束;e) 以上要求用流成员函数和流操作子各做一遍。解:特别注意flags()和setf()的使用方法。注意注释。#include#includeusing namespace std;int main(void)int inum1=255,inum2=8191,inum3=65535;double fnum=31.415926535,fnum1;char str255;cout以左对齐方式输出整数,域宽为12:
7、endl;cout.flags(ios:left);cout.width(12);coutinum1;cout.width(12);coutinum2;cout.width(12);coutinum3endl;cout.flags(ios:left|ios:oct|ios:showbase);/或(cout.flags()|ios:oct|ios:showbase)cout.width(12);coutinum1;cout.width(12);coutinum2;cout.width(12);coutinum3endl;cout.setf(ios:hex,ios:hex|ios:oct);/或
8、cout.setf(ios:hex);cout.unsetf(ios:oct);/特别注意第二个参数要包含第一个参数,否则两个参数位置上的位全清零,结果错cout.width(12);coutinum1;cout.width(12);coutinum2;cout.width(12);coutinum3endl;cout.precision(10); /精度为10位,小数点后10位cout.setf(ios:scientific,ios:floatfield);/floatfield为0x1800cout科学数表达方式:fnumn;cout.setf(ios:fixed,ios:floatfie
9、ld); /设为定点,取消科学数方式cout定点表达方式:fnumn;cout请输入PI:fnum1;/输入3.1415926535coutfnum1n;/由输出看输入精度无作用cin.get();/吸收回车cout请输入一个字符串:endl;cin.getline(str,255);coutstrendl;cout.flags(0);cout以左对齐方式输出整数,域宽为12:endl;coutleftdecsetw(12)inum1;coutsetw(12)inum2;coutsetw(12)inum3endl;coutshowbaseoctsetw(12)inum1;coutsetw(12
10、)inum2;coutsetw(12)inum3endl;couthexsetw(12)inum1;coutsetw(12)inum2;coutsetw(12)inum3endl;coutsetprecision(10)scientific科学数表达方式:fnumn;coutfixed定点表达方式:fnumn; /精度10位,指小数点后10位return 0;9.4 修改【例9.3】,增加一个字符串输入后要求确认,以保证输入的字符串(如姓名、地址等)无误。解:#includeusing namespace std;int main(void)char ch,str255;docout请输入一个
11、字符串:endl;cin.getline(str,255);coutstrendl;cout输入正确吗?Y or Nch;cin.get();/吸收输入Y or N时留下的回车while(!(ch=Y|ch=y);cout输入正确:endl;coutstrendl;return 0;9.5 重载学生类的“”运算符。#include#include#include#includeusing namespace std;class studentint id ; /学号string name; / 姓名char sex; / 性别int age; / 年龄string address; /家庭地址
12、float eng, phy, math, electron; /英语,物理,数学和电子学成绩public:student(int=0,string=#,char=#,int=0,string=#,float=0,float=0,float=0,float=0);friend ostream&operator(istream&sour,student&st); /重载提取运算符; /流类作为形式参数必须是引用student:student(int i,string n,char s,int a,string add,float en,float ph,float ma,float ele)id
13、=i;name=n;sex=s;age=a;address=add;eng=en; phy=ph; math=ma; electron=ele;ostream&operator(ostream&dest,student&st) /重载插入运算符destst.idtst.nametst.sextst.agetst.addresstst.engtst.phytst.mathtst.electron(istream&sour,student&st) /重载提取运算符cout请输入学号:st.id;cout请输入姓名:st.name;cout请输入性别:st.sex;cout请输入年龄:st.age;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 第九 习题 解答
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内