ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:32.96KB ,
资源ID:5675653      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5675653.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++程序设计第2版第九章习题解答.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++程序设计第2版第九章习题解答.docx

1、C+程序设计第2版第九章习题解答第九章 流类库和输入/输出习题一. 本概念与基础知识测试题9.1填空题9.1.1 在C+中“流”是表示 (1) 。从流中取得数据称为 (2) ,用符号 (3) 表示;向流中添加数据称为 (4) ,用符号 (5) 表示。答案:(1)数据从一个对象到另一个对象的传送(2)提取操作(3)(4)插入操作(5)(stream_extraction operator)(6)”)运算符在缺省情况下是跳过空白(包括空格,制表,backspace和回车等)的,这样拷贝的文件会缺少一些字符。第二,该程序应能确定文件是否拷贝结束。按行进行拷贝,getline()回车换行符并不放在bu

2、f中,因此要加一个回车换行符。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_dir beg=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)应用最广,如: data(-20L,ios:cur);表示将文件定位指针从当前位置向文件头部方向移20个字节。 data(20L,ios:beg);表示将文件定位指针从文件头向文件尾方向移20个字节。 data(-20L,

5、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)以八进制、十进制、十六进制输入输出整数;c)实现浮点数的指数格式和定点格式

6、的输入输出,并指定精度;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:endl; cout.flags(ios:left); cout.w

7、idth(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);/或cout.setf(ios:hex);cout.u

8、nsetf(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为0x1800 cout科学数表达方式:fnumn; cout.setf(ios:fixed,ios:floatfield); /设为定点,取消科学数方

9、式 cout定点表达方式:fnumn; cout请输入PI:fnum1;/输入3.1415926535 coutfnum1n;/由输出看输入精度无作用 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)in

10、um2; 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; do cou

11、t请输入一个字符串: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 student int id ; /学号 string name; / 姓名 char sex; / 性别 int age; / 年龄 str

12、ing address; /家庭地址 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,

13、float ma,float ele) id=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.addresst st.engtst.phytst.mathtst.electron(istream&sour,student&st) /重载提取运算符 cout请输入学号:st.id; cout请输入姓名:st.name; co

14、ut请输入性别:st.sex; cout请输入年龄:st.age; cout请输入地址:st.address; cout请输入英语、物理、数学、电子各科成绩:st.engst.physt.mathst.electron; return sour;int main() student st1,st2(2104105,陈英,m,19,黄山路380号,89,78,90,96); cinst1; coutst1”运算符,对所有可能的错误都能要求重输。解:#includeusing namespace std;class Complex double Real,Image;public: Complex

15、(double r=0.0, double i=0.0):Real(r),Image(i);/定义构造函数 /见【例5.7】,这里省略,以节约篇幅 friend ostream&operator(istream&s,Complex&a); /流类作为形式参数必须是引用ostream&operator(ostream&s,const Complex &z) return s(z.Real,z.Image(istream&s,Complex &a)/格式为r;r,i;(r);(r,i);整个复数输完才可回车 /容错强,如:sd(fr56cv,s79nml,45)i,78回车 可正确判读为(56,7

16、9) double re=0,im=0; char c=0; do sc; while(c!=(&c!=.&!(c=0&cc; while(c!=.&!(c=0&cre;/实部 do s.get(c);/因为可能是回车 while(c!=n&c!=)&c!=,);/读空数字串后的无用字符 if(c=,) do/只读数字串 sc; while(c!=.&!(c=0&cim;/虚部 do s.get(c);/因为可能是回车 while(c!=n&c!=);/读空数字串后的无用字符 else im=0;/无此步,第二次赋值出错 if(c!=)s.clear(ios:failbit);/漏了括号给一个

17、操作失败标志 else s.putback(c);/无括号,返回一个字符到输入缓冲区 sre;/实部 do s.get(c);/因为可能是回车 while(c!=n&c!=,);/读空数字串后的无用字符 if(c=,) do/只读数字串 sc; while(c!=.&!(c=0&cim;/虚部 do s.get(c);/因为可能是回车 while(c!=n);/读空数字串后的无用字符 else im=0;/无此步,第二次赋值出错 if(s) a=Complex(re,im); return s;int main() Complex a,b,c,d; cout输入一个实数a; cout输入一个复数b; cout输入一个用括号括起来的实数c; cout

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1