![](https://img-blog.csdnimg.cn/08e7efe227fc472990735be7abb161f9.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++程序设计(第三版)谭浩强课后习题答案
C++程序设计(第三版)谭浩强课后习题答案
suezdv
这个作者很懒,什么都没留下…
展开
-
习题 6.4 有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数。
习题 6.4 有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数。原创 2022-09-20 22:38:16 · 491 阅读 · 1 评论 -
习题 6.10 将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右,从上到下顺序依次从小到大存放),写一函数实现之。用main函数调用。
习题 6.10 将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右,从上到下顺序依次从小到大存放),写一函数实现之。用main函数调用。代码:原创 2022-03-17 14:43:08 · 1136 阅读 · 0 评论 -
习题 14.3 学校的人事部门和教务部门保存了学生的一些数据,两个部门分别编写了本部门的学生数据管理程序。现在要求在全校的学生数据管理程序中调用这两个部门的学生数据。要求用C++编程,使用命名空间。
习题 14.3 学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址),教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩),两个部门分别编写了本部门的学生数据管理程序,其中都用了Student作为类名。现在要求在全校的学生数据管理程序中调用这两个部门的学生数据,分别输出两种内容的学生数据。要求用C++编程,使用命名空间。头文件 14.3.1(人事部门):代码://人事部门#include<iostream>#include<string>原创 2022-03-17 11:02:09 · 1297 阅读 · 0 评论 -
习题 14.2 将例14.3程序改为下面的程序,请分析执行过程,写出运行结果。并指出由于异常处理而调用了哪些析构函数。
习题 14.2 将例14.3程序改为下面的程序,请分析执行过程,写出运行结果。并指出由于异常处理而调用了哪些析构函数。代码:#include<iostream>#include<string>using namespace std;class Student{public: Student(int n, string nam) { cout << "constructor -" << n << endl;原创 2022-03-17 10:15:47 · 357 阅读 · 0 评论 -
习题 14.1 求一元二次方程式 ax2+bx+c=0 的实根,如果方程没有实根,则输出有关警告信息。
习题 14.1 求一元二次方程式 的实根,如果方程没有实根,则输出有关警告信息。代码:#include<iostream>#include<cmath>using namespace std;int main(){ void func(double , double , double); double a, b, c; double t; cout << "输入a,b,c:" << endl; cin >> .原创 2022-03-17 09:55:46 · 1028 阅读 · 0 评论 -
习题 13.6 在例13.5的基础上,修改程序,将存放在c数组中的数据读入并显示。
习题 13.6 在例13.5的基础上,修改程序,将存放在c数组中的数据读入并显示。代码:#include<iostream>#include<strstream>using namespace std;struct Student{ int num; char name[20]; float score;};int main(){ Student stud[3] = { 1001,"Li",78,1002,"Wang",89.5,1004,原创 2022-03-16 16:18:25 · 285 阅读 · 0 评论 -
习题 13.5 编程序实现以下功能。
习题 13.5 编程序实现以下功能:(1) 按职工号由小到大的顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存。(2) 从键盘输入两个员工的数据(职工号大于已有的职工号),增加到文件的末尾。(3) 输出文件中全部职工的数据。(4) 从键盘输入一个号码,从文件中查找有无此职工号,如有则显示此职工是第几个职工,以及此职工的全部数据。如没有,就输出“无此人”。可以反复多次查询,如果输入查找的职工号为0,就结束查询。(1) 按职工号由小到大的顺序将5个员工的数据(包括号码、姓原创 2022-03-15 15:09:54 · 1476 阅读 · 1 评论 -
习题 13.4 建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作。
习题 13.4 建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作:(1) 从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);(2) 从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;(3) 从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。分部完成:(1) 从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数)代码:#include<fstrea...原创 2022-03-14 15:05:26 · 3510 阅读 · 0 评论 -
习题 13. 3 编程序,在显示屏上显示一个由字母B组成的三角形。
习题 13. 3 编程序,在显示屏上显示一个由字母B组成的三角形。B BBB BBBBB BBBBBBB BBBBBBBBB BBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBB代码:#include <iostream>#include <iomanip>using namespace std;int main()...原创 2022-03-14 12:03:14 · 512 阅读 · 1 评论 -
习题 13.2 从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。
习题 13.2 从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。1 用控制符控制输出格式代码:#include<iostream>#include<iomanip>using namespace std;int main(){ double a[5]; int i; cout << "请输入5个数值:" << endl; for (i = 0; i != 5; ++i) { cin >>原创 2022-03-14 11:42:26 · 1260 阅读 · 0 评论 -
习题 13.1 输入三角形的三边a,b,c,编写程序,输入a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。
习题 13.1 输入三角形的三边a,b,c,计算三角形的面积的公式是 构成三角形的条件是:a+b>c, b+c>a, c+a>b编写程序,输入a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。代码:#include<iostream>...原创 2022-03-14 11:23:50 · 1530 阅读 · 0 评论 -
习题 12.5 编写一个程序,定义抽象基类Shape,由它派生出5个派生类:Cricle,Square, Rectangle, Trapezoid ,Triangle。用虚函数分别计算图形面积。
习题 12.5 编写一个程序,定义抽象基类Shape,由它派生出5个派生类:Cricle,Square, Rectangle, Trapezoid ,Triangle。用虚函数分别计算图形面积,并求所有图形面积的和.要求用基类指针数组,使它的每一个元素指向一个派生类对象。代码:#include<iostream>#include<iomanip>using namespace std;class Shape{public: Shape() {} virt原创 2022-03-12 00:49:05 · 1549 阅读 · 0 评论 -
习题 12.4 编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle、Rectangle、Triangle,用一个函数pritArea分别输出以上三者的面积。
习题 12.4 编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle、Rectangle、Triangle,用一个函数pritArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。代码:#include<iostream>#include<iomanip>using namespace std;class Shape{public: Shape() {} virtual ~ Shape() {} virtual doub原创 2022-03-11 23:48:57 · 2398 阅读 · 0 评论 -
习题 11.10 将本章11.8节中的程序片段加以补充完善,成为一个完整的程序。在程序中使用继承和组合。在定义Professor类对象prof1时给出所有数据的初值,然后修改prof1的生日数据。。。
习题 11.10 将本章11.8节中的程序片段加以补充完善,成为一个完整的程序。在程序中使用继承和组合。在定义Professor类对象prof1时给出所有数据的初值,然后修改prof1的生日数据,最后输出prof1的全部最新数据。代码:#include<iostream>using namespace std;class Teacher{public: Teacher(){} Teacher(int nu, string na,char s):num(nu),name原创 2022-03-09 10:46:51 · 403 阅读 · 0 评论 -
习题 11.9 分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类。
习题 11.9 分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类。要求:(1)在两个基类中都包含姓名、年龄、性别、地址、电话数据成员。(2)在Teacher类中还包含数据成员职称title,在Cadre类中还包含数据成员职务post,在Teacher_Cadre类中还包含数据成员工资wage(3)对两个基类中的姓名、年龄、性别、地址、电话数据成员用相同的名字,在访问这类数据成员时,指定作用域。(4)在类体...原创 2022-03-09 10:46:35 · 1432 阅读 · 0 评论 -
习题 11.8 有以下程序,请完成下面工作。
习题 11.8 有以下程序,请完成下面工作:(1)阅读程序,写出运行时输出的结果;(2)上级运行,验证结果是否正确;(3)分析程序执行过程,尤其是调用构造函数和析构函数的过程。代码:#include<iostream>using namespace std;class A{public: A() { cout << "constructing A" << endl; } ~A() { cout << "destruc原创 2022-03-09 10:46:08 · 1576 阅读 · 0 评论 -
习题 11. 4 改例11.3的程序,改为公用继承方式。上机调试程序,使之能正确运行并得到正确结果。对这两种继承方式做分析比较,考虑在什么情况下二者不能互相替换。
习题 11. 3 改例11.3的程序,改为公用继承方式。上机调试程序,使之能正确运行并得到正确结果。对这两种继承方式做分析比较,考虑在什么情况下二者不能互相替换。在类外访问时,protected继承的public和protected成员不可被访问,而public继承的可以#include <iostream>using namespace std;class Student {public:原创 2022-03-09 10:45:19 · 871 阅读 · 0 评论 -
习题 11.3 将例11.3 的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。
习题 11.3 将例11.3 的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。代码:#include <iostream>using namespace std;class Student {public: protected: int num原创 2022-03-09 10:44:13 · 1037 阅读 · 0 评论 -
习题 11.2 将例11.2的程序片断补充和改写成一个完整、正确的程序,用私有继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值。
习题 11.2 将例11.2的程序片段补充和改写程一个完整,正确的程序,用私有继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。代码:#include <iostream>using namespace std;class Student{public: void get_value() { cout << "请输入学号、姓名、性别:" <原创 2022-03-09 10:43:55 · 529 阅读 · 0 评论 -
习题 11.1 将例11.1的程序片断补充和改写成一个完整、正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值。
习题 11.1 将例11.1的程序片断补充和改写成一个完整、正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。代码:#include <iostream>using namespace std;class Student{public: void get_value() { cout << "请输入学号、姓名、性别:" <&原创 2022-03-09 10:43:24 · 836 阅读 · 0 评论 -
习题 10.7 定义一个teacher类和一个student类,二者有一份数据成员是相同的。将一个student对象转换为teacher对象,只将相同的数据成员移植过去。
习题 10.7 定义一个teacher(教师)类和一个student(学生)类,二者有一份数据成员是相同的,例如num,name,sex。编写程序,将一个student对象(学生)转换为teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为:一个学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。代码:#include<iostream>using namespace std;class S原创 2022-03-09 10:42:47 · 2882 阅读 · 0 评论 -
习题 10.6 请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。
习题 10.6 请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。定义Complex(复数)类,在成员函数中包含重载类型转换运算符:operator double(){return real;}代码:#include <iostream> using namespace std; class Complex{public: Complex() { re原创 2022-03-08 13:40:32 · 1041 阅读 · 0 评论 -
习题 10.5 在第4题的基础上,重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。
习题 10.5 在第4题的基础上,重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。代码:#include<iostream>using namespace std;class Arr{public: void input(); void display(); friend Arr (operator +)(Arr, Arr); friend ostream& operator << (ost原创 2022-03-08 11:42:39 · 1124 阅读 · 1 评论 -
习题 10.4 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b。
习题 10.4 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b。代码:#include<iostream>using namespace std;class Arr{public: void input(); void display(); friend Arr (operator +)(Arr, Arr);private: double arr[2][3];};void Arr::input()原创 2022-03-08 11:37:32 · 4274 阅读 · 0 评论 -
习题 10.3 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。
习题 10.3 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2位复数)。编程序,分别求两个复数之和、整数和复数之和。代码:#include<iostream>using namespace std;class Complex{public: Complex(double r = 0.0,double i原创 2022-03-08 11:19:30 · 1997 阅读 · 1 评论 -
习题 10.2 定义一个复数类Complex,重载运算符+,-,*,/,使之能用于复数的加、减、乘、除。运算符重载函数作为Complex类的成员函数。编程序,分别求两个复数之和、差、积和商。
习题 10.2 定义一个复数类Complex,重载运算符+,-,*,/,使之能用于复数的加、减、乘、除。运算符重载函数作为Complex类的成员函数。编程序,分别求两个复数之和、差、积和商。代码:#include<iostream>using namespace std;class Complex{public: Complex(double r = 0.0,double i = 0.0):real(r),imag(i) {} Complex operator+(Co原创 2022-03-08 11:11:20 · 2112 阅读 · 0 评论 -
习题 10.1 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普通函数。编写程序,求两个复数之和。
习题 10.1 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普通函数。编写程序,求两个复数之和。代码:#include<iostream>using namespace std;class Complex{public: Complex(double r = 0.0,double i = 0.0):real(r),imag(i) {} double getreal(); double getimag(原创 2022-03-08 11:02:57 · 872 阅读 · 0 评论 -
习题 9.12 将例9.14改写为在类模板外定义各成员函数。
习题 9.12 将例9.14改写为在类模板外定义各成员函数。代码:#include<iostream>using namespace std;template <class numtype>class Compare{public: Compare(numtype a, numtype b) { x = a; y = b; } numtype max(); numtype min();private: numtype x, y;};原创 2022-03-08 11:03:54 · 622 阅读 · 5 评论 -
习题 9.11 将例9.13中的Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据,输出年、月、日和时、分、秒。
习题 9.11 将例9.13中的Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据,输出年、月、日和时、分、秒。代码:#include <iostream>using namespace std;class Time;class Date{public: Date(int, int, int); friend Time;private: int month; int day; int year;};原创 2022-03-08 11:04:11 · 986 阅读 · 0 评论 -
习题 9.10 将例9.13程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。
习题 9.10 将例9.13程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。代码:#include <iostream>using namespace std;class Date;class Time{public: Time(int, int, int)原创 2022-03-08 11:04:30 · 1379 阅读 · 0 评论 -
习题 9.9 商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。
习题 9.9 商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。现已知当天3名销货员的销售情况为: 销货员号(num) 销货件数(quantity) 销货单价(price) 101 5 23.5 102 ...原创 2022-03-08 11:03:36 · 979 阅读 · 0 评论 -
习题 9.8 修改第6题的程序,增加一个fun函数,改写main函数。改为在fun函数中调用change和display函数。在fun函数中使用对象的引用(Student &)作为形参。
习题 9.8 修改第6题的程序,增加一个fun函数,改写main函数。改为在fun函数中调用change和display函数。在fun函数中使用对象的引用(Student &)作为形参。代码:#include <iostream>using namespace std;class Student{public: Student(int n, float s) :num(n), score(s) {} void change(int n, float s) { n原创 2022-03-07 15:29:54 · 1703 阅读 · 0 评论 -
习题 9.7 将第6题的程序分别作以下修改,分析所修改部分的含义以及编译和运行的情况。
习题 9.7 将第6题的程序分别作以下修改,分析所修改部分的含义以及编译和运行的情况。(1) 将main函数第2行改为const Student stud(101,78.5);(2) 在(1)的基础上修改程序,使之能正常运行,用change函数修改数据成员num和score的值。(3) 将main函数改为int main( ){Student stud(101,78.5);Student *p=&stud;p->display( );p->change(101,80原创 2022-03-07 14:45:29 · 2372 阅读 · 0 评论 -
习题 9.6 阅读下面程序,分析其执行过程,写出输出结果。
习题 9.6 阅读下面程序,分析其执行过程,写出输出结果。代码:#include <iostream>using namespace std;class Student{public: Student(int n, float s) :num(n), score(s) {} void change(int n, float s) { num = n; score = s; } void display() { cout << num << "原创 2022-03-07 14:15:08 · 1716 阅读 · 0 评论 -
习题 9.5 建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
习题 9.5 建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。代码:原创 2022-03-07 14:12:58 · 4099 阅读 · 0 评论 -
习题 9.4 建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。
习题 9.4 建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。代码:#include <iostream>using namespace std;class Student{public: Student(string n,double s): num(n),score(s) {} void print();private: string num; double score;};int main()原创 2022-03-07 14:03:21 · 7106 阅读 · 2 评论 -
习题 9.3 如果将第2题中程序的第5行改为用默认参数,即Date(int=1,int=1,int=2005); 分析程序有无问题。上机编译,分析出错信息,修改程序使之能通过编译。
习题 9.3 如果将第2题中程序的第5行改为用默认参数,即Date(int=1,int=1,int=2005); 分析程序有无问题。上机编译,分析出错信息,修改程序使之能通过编译。要求保留上面一行给出的构造函数,同时能输出与第2题的程序相同的输出结果。答:构造函数使用默认参数后就不能再使用重载的构造函数,会出现歧义代码:#include <iostream>using namespace std;class Date{public: Date(int = 1,原创 2022-03-07 13:48:47 · 936 阅读 · 0 评论 -
习题 9.2 分析下面的程序 写出其运行时的输出结果。
习题 9.2 分析下面的程序 写出其运行时的输出结果。代码:#include <iostream>using namespace std;class Date {public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month; int day; int year; }; Date::Date(原创 2022-03-07 13:44:38 · 1915 阅读 · 0 评论 -
习题 8.6 需要求3个长方柱的体积,请编写一个基于对象的程序。数据成员包括length(长)、width(宽)、 height(高)。要求用成员函数实现以下功能。
习题 8.6 需要求3个长方柱的体积,请编写一个基于对象的程序。数据成员包括length(长)、width(宽)、 height(高)。要求用成员函数实现以下功能:(1) 由键盘分别输入3个长方柱的长、宽、高;(2) 计算长方柱的体积;(3) 输出3个长方柱的体积。请编程序,上机调试并运行。#include<iostream>using namespace std;class Cuboid{public: void input(); double volume(.原创 2022-03-07 10:54:27 · 3360 阅读 · 0 评论 -
习题 8.3 在第2题的基础上进行如下修改: 在类体内声明成员函数,而在类外定义成员函数。
习题 8.3 在第2题的基础上进行如下修改: 在类体内声明成员函数,而在类外定义成员函数。代码:#include <iostream>using namespace std;class Time{public: void set_time(void); void show_time(void);private: int hour; int minute; int sec;};Time t;int main(){ t.set_time(); t.s原创 2022-03-07 10:53:58 · 1157 阅读 · 0 评论