C++04737 第9章 课后练习题 完整答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章
一、单项选择题
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位,其余填充a cout << 256 << " OK" << endl;
}
输出结果如下:
2. 分析程序功能。
#include
#include
using namespace std;
void main()
{
for(int i=0; i<10; i++)
cout << endl << setw(10-i) << '*' << setw(10) << '*';
//这里没有使用setfill(),则默认填充空格
}
输出结果如下:
四、完成程序题(除特别说明外,程序可以直接复制到VC++ 6.0运行)
1.完成下面的主程序,使其输出为:-
2.589000e+001 +2.589000e+001,主程序如下:#include
#include
void main()
{
参考课本P197,为采用//科学计数法。他们都属于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 FUN
{
//类FUN<<
}fun;
{
os.setf(ios::left);
return os;
}
void main()
{
cout << setfill('*') << setw(10) << 12345 << " ";
cout << fun << setw(10) << 54321 << endl;
//cout< } 输出结果如下: 五、编程题(程序可以直接复制到VC++ 6.0运行) 1.利用流格式控制,进行成绩和名字的输出,要求名字左对齐,分数右对齐。#include < iostream > #include < string > #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 < iostream> #include < fstream > using namespace std; void main()