1、1面向对象程序设计课后题答案第二章 C+概述【2.6】D【2.7】D【2.8】A【2.9】A【2.10】B【2.11】A【2.12】C【2.13】B【2.14】D【2.15】C【2.16】D【2.17】C【2.18】程序的运行结果:101【2.19】程序的运行结果:10 10【2.20】程序的运行结果:21020【2.22】编写一个 C+风格的程序,用动态分配空间的方法计算 Fibonacci 数列的前20 项并存储到动态分配的空间中。#include int main()int *p,i;p=new int20;p0=1;p1=1;for(i=2;i#includedouble sroot(
2、int m)return sqrt(m);double sroot(long m)return sqrt(m);double sroot(double m)return sqrt(m);int main()coutint main()int k=0;for(int i=0;i=0)k+;coutmn;if(mn)change(m,n);cout6#includeusing namespace std;double f(double x)return 2*x*x*x-4*x*x+3*x-6;int main()double left,right,middle,ymid,yleft,yright;
3、coutleftright;yleft=f(left);yright=f(right);if(yleft*yright0)cout=1e-6);coutusing namespace std;15class Counterpublic:Counter(int number);void increment(); /给原值加 1void decrement(); /给原值减 1int getValue(); /取得计数器值int print(); /显示计数private:int value;counter:counter(int number)value = number;void counte
4、r:increment()value+;void counter:decrement()16value-;int counter:getvalue()return value;int counter:print()coutusing namespace std;class Datepublic:void printDate();/显示日期void setDay(int d);/设置日的值void setMonth(int m);/设置月的值void setYear(int y);/设置年的值private:int day,month,year;void Date:printDate()cout
5、using namespace std;19const double PI=3.1415926;class Cylinderdouble radius,height,volume;public:Cylinder(double r,double h)radius=r;height=h;volume=PI*radius*radius*height;void vol()coutusing namespace std;class Bookprivate:int qu,price;public:Book(int i);void print();void printqandp();Book:Book(in
6、t i)qu = i;price = qu * 10;21void Book:print()coutprintqandp();b-;Book *c = a; /顺序显示数组元素for(i = 0; i printqandp();c+;/或者class Bookprivate:int qu,price;public:Book(int q,int p);void print();void printqandp();Book:Book(int q,int p)23qu = q;price = p;void Book:print()coutprintqandp();b-;Book *c = a; /顺
7、序显示数组元素for(i = 0; i printqandp();c+;【3.35】构建一个类Stock,含字符数组stockcode及整型数据成员 quan、双精度型数据成员 price。构造函数含3 个参数:字符数组 na及 q、p。当定义 Stock 的类对象时,将对象的第一个字符串参数赋给数据成员 stockcode,第 2 个和第 3 个参数分别赋给 quan 和 price。未设置第 2个和第 3 个参数时,quan的值为 1000,price的值为 8.98。成员函数 print()没有形参,需使用 this 指针,显示对象数据成员的内容。假设类 Stock 第 1个对象的三个参
8、数为:“600001”、3000 和5.67,第 2 个对象的第 1 个数据成员的值是“600001”,第 2 和第 3个数据成员的值取默认值。要求编写程序分别显示这两个对象数据成员的值。#include#includeusing namespace std;25class Stockpublic:Stock(char na, int q = 1000,double p =8.98);print();private:char stockcode16;int quan;float price;Stock:Stock(char na, int q,double p)strcpy(stockcode
9、, na);quan = q;price = p;Stock:print()coutstockcodequan;coutprice#includeusing namespace std;class Studentstring name;string sno;double score;static int num;static double sum;public:Student(string n,string no,double s);27void print();static double getAverage();static double gettotal();static int get
10、num();int Student:num=0;double Student:sum=0;Student:Student(string n,string no,double s)name=n;sno=no;score=s;num+;sum+=s;void Student:print()cout“学生的学号为: “sno“, 姓名为: “name“, 成绩为:“scoreendl;28int Student:getnum()return num;double Student:getAverage()if (num=0)return 0;elsereturn sum/num;double Stud
11、ent:gettotal()return sum;int main()cout“当前学生人数为:“Student:getnu m()“学生的总成绩为:“Student:gettotal()“学生的平均成绩为:“Stude nt:getAverage()endl;Student s1(“12012“,“张明“,80);29s1.print();cout“当前学生人数为:“s1.getnum()“ 学生的总成绩为:“s1.gettotal()“学生的平均成绩为:“s1.getAverage()endl;Student s2(“09615“,“李涛“,50);s2.print();cout“当前学生
12、人数为:“s2.getnum()“ 学生的总成绩为:“s2.gettotal()“学生的平均成绩为:“s2.getAverage()endl;Student s3(“12016“,“王晓“,90);s3.print();cout“当前学生人数为:“s3.getnum()“ 学生的总成绩为:“s3.gettotal()“学生的平均成绩为:“s3.getAverage()endl;return 0;30第四章 派生类与继承【4.8】A【4.9】C【4.10】C【4.11】B【4.12】程序运行结果:Constructor B2Constructor B1Constructor A321【4.13】程序运行结果:主食=bread副食=steak【4.14】程序运行结果:0,0,00,1,03,6,9【4.15】程序运行结果: