C++04737 第9章 课后练习题 完整答案.doc_第1页
C++04737 第9章 课后练习题 完整答案.doc_第2页
C++04737 第9章 课后练习题 完整答案.doc_第3页
C++04737 第9章 课后练习题 完整答案.doc_第4页
C++04737 第9章 课后练习题 完整答案.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章一、单项选择题1.B;进行文件操作时需要包含头文件“fstream”;2.A;课本P194;3.B;课本P196;4.B;课本P203;5.D;课本P18;6.D;关键字virtual能用来声明虚基类。二、填空题1.输出数据按输出域右边对齐输出;(课本P196)2.cin.ignore(3);3.ofstream fout(Text.txt); 重点三、分析程序题(程序可以直接复制到VC+ 6.0运行)1. 分析下面程序的输出结果。#include #include using namespace std;void main()cout oct 15 ;cout hex 15 ;cout setfill(a) setw(10); /输出域占10个位,除数据外,其他填充a,如256占3位,其余填充acout 256 OK endl;输出结果如下:2. 分析程序功能。#include #include using namespace std;void main()for(int i=0; i10; i+)cout endl setw(10-i) * setw(10) *;/这里没有使用setfill(),则默认填充空格输出结果如下:四、完成程序题(除特别说明外,程序可以直接复制到VC+ 6.0运行)1.完成下面的主程序,使其输出为:-2.589000e+001 +2.589000e+001,主程序如下:#include #include void main()std:cout.setf(std:ios_base:showpos|std:ios_base:scientific);/ 参考课本P197,showpos为设置正数前面添加一个“+”号,scientific为采用/科学计数法。他们都属于ios_base类,ios_base类名在标准命名空间std/中定义。std:cout -25.89F ;std:cout 25.89f std:endl;输出结果如下:2.完成下面的主程序,使其输出为:*12345 54321*,源程序如下:注意:这个程序在VC+6.0中不能编译通过(编译器本身的bug),需要在visual studio 2010(或2013等高级编译平台)才能编译通过。#include #include using namespace std;class FUNfriend ostream &operator(ostream&, FUN); /类FUN中的友元函数,重载运算符fun;ostream &operator(ostream& os, FUN f)os.setf(ios:left);return os;void main()cout setfill(*) setw(10) 12345 ;cout fun setw(10) 54321 endl; /coutfun等价于operator(cout,fun);输出结果如下:五、编程题(程序可以直接复制到VC+ 6.0运行)1. 利用流格式控制,进行成绩和名字的输出,要求名字左对齐,分数右对齐。#include #include #include using namespace std;class Student /定义学生类private:string name; /学生姓名float score; /学生成绩public:Student(string n=0, float s=0) /带默认参数的构造函数name = n;score = s;string getName()return name;float getScore()return score;void main()Student s1(liming, 98); /建立5个学生对象Student s2(sdfh, 90);Student s3(vn.fy, 80);Student s4(cnbtrt, 70);Student s5(ryuety, 48);cout setw(10) left 姓名 setw(5) right 分数 endl;cout setw(10) left s1.getName() setw(5) right s1.getScore() endl;cout setw(10) left s2.getName() setw(5) right s2.getScore() endl;cout setw(10) left s3.getName() setw(5) right s3.getScore() endl;cout setw(10) left s4.getName() setw(5) right s4.getScore() endl;cout setw(10) left s5.getName() setw(5) right s5.getScore() endl;/设置名字的输出宽度为10,左对齐; 成绩的输出宽度为5,右对齐。输出结果如下:2. 编写一个产生文本文件的程序。#include #include using namespace std;void main()char *p = C+程序设计 ;ofstream myFile(C+_9_5_2.txt); /在工程文件的根目录下会产生文本文件C+_9_5_2.txtmyFile p; /将字符指针指向的字符串写到文本文件中输出结果如下:在根目录下的文件名:文本文件里面的内容:3. 编写一个程序,要求输入三角形的3条边,然后判断是否合理,如果不合理,给出信息并要求重新输入;如果合理,计算其面积并将结果存入文件中。#include #include #include #include #include #include using namespace std;class Triangle /建立三角形类private:double sizeA, sizeB, sizeC, area; /三条边、面积public:Triangle(double a = 0,double b = 0, double c = 0) /带默认参数的构造函数sizeA = a;sizeB = b;sizeC = c;double p = (sizeA + sizeB + sizeC) *0.5;area = sqrt(p * (p - sizeA) * (p - sizeB) * (p - sizeC);void set_Tri(double a , double b, double c) /为三条边赋值的函数sizeA = a;sizeB = b;sizeC = c;double p = (sizeA + sizeB + sizeC) *0.5;area = sqrt(p * (p - sizeA) * (p - sizeB) * (p - sizeC);void set(vector &); /用于输入边长并判断是否合理,最后存入文件;/*/* 成员函数:set/* 参 数:向量对象的引用/* 返 回 值:无/* 功 能:为向量赋值并将向量存入文件/*void Triangle:set(vector &v) /向量的类型为TriangleTriangle Tri;double a, b, c;while (1)cout a;if (a = -1)/a的长度输入-1作为结束符ofstream writeFile;char fileName20;cout fileName;/输入文件名的时候加入文件名后缀“*.txt”cout 保存到文件: fileName endl;writeFile.open(fileName);if (writeFile.fail()cout 没有正确建立文件! endl;return;for (int i = 0; i v.size(); i+)writeFile 第 i+1 个三角形: ;writeFile vi.sizeA vi.sizeB vi.sizeC vi.area endl;writeFile.close();cout 一共写入 v.size() 个三角形信息 endl;return;cout b;cout c;if (a0 & b0 & c0 & (a+b)c) & (a+c)b) & (b+c)a) /任意两边之和应大于第三边Tri.set_Tri(a, b, c);v.push_back(Tri);elsecout 不能组成三角形,重新输入 endl;void main()vector v_tri;Triangle tri;tri.set(v_tri);输出结果如下:文本文件里面的内容:4. 改写上题的程序,使程序反复计算,直到输入结束符号为止。要求在停止计算后,询问要保存的文件名,然后讲结果一次写入制定文件中。答案:和第3题的答案一样。5. 从文件TEST中读出字符并写入TEST1里,要求均附加错误检查。#include #include /包含文件操作的头文件using namespace std;void main()ifstream txt1(TEST.txt); /建立输入文件对象指针txt1,指向文件TEST.txt,/文件TEST.txt要预先放在根目录下。ofstream txt2(TEST1.txt);/建立输出文件对象txt2char c;if (!txt1)cout 文件打不开! endl;return;if (!txt2)cout 没有正确建立文件! noskipws; /这语句要写上,否则文件中的空格会被符忽略掉txt1 c; /从文件中提取字符if (txt1.eof()txt1.close();return;cout c;/打印字符txt2 c;/将字符写到文件TEST1.txt中输出结果如下:文件“TEST.txt”和“TEST1.txt”中的内容:6. 从键盘输入一个字符串,将其中的大写字母全部转换成小写字母,然后存入到文件名为“text”的磁盘文件中保存。输入的字符串以“$”结束。#include #include using namespace std;void main()char a100; /声明字符数组,存储键盘输入+ofstrea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论