李爱华、程磊_面向对象程序设计课后答案(完整版)10953.pdf
《李爱华、程磊_面向对象程序设计课后答案(完整版)10953.pdf》由会员分享,可在线阅读,更多相关《李爱华、程磊_面向对象程序设计课后答案(完整版)10953.pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第二章 2-4#include using namespace std;Add(int a,int b);int main()int x,y,sum;coutxy;sum=add(x,y);cout x+y=sumendl;Add(int a,int b)return a+b;2-5 (1)this is a C+program.(2)x=50.6 y=10 z=A x=216.34 y=10 z=A x=216.34 y=2 z=A x=216.34 y=2 z=E (3)x y z 500 1000 0 500 1500 1500 500 200 1500 2-6#include usi
2、ng namespace std;int main()int*p,*init;int countp=0;int countn=0;p=new int20;init=p;for(int i=0;i*p;p+;p=p-20;for(i=0;i0)countp+;if(*p0)countn+;cout*p;p+;cout正数有:countpendl;cout负数有:countnendl;p=init;delete p;return 0;2-7 不做要求#include /#include using namespace std;void checkagescore(string name,int a
3、ge)if(name=exit)throw name;if(age50)throw age;int main()string name;int age;for(int i=0;iage;try checkagescore(name,age);catch(string)coutexception:name is exitendl;continue;catch(int)coutexception:age is not properendl;continue;coutname:name age:ageendl;return 0;第三章 3-1 (1)A(2)C(3)B(4)C(5)C (6)B(7)
4、B(8)C(9)C 3-7 (1)main()函数中 p1.age=30;语句是错误的。age 是类的私有成员 (2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1)或 A(int a1):a(a1),b(a)再将 main 中的 A a(1,2);改为 A a(1);(3)(1)在 Test 类中添加语句:void print();void Print()coutx-y=x-yendl;改为 void Test:Print()coutx-y=x-yendl;main 函数中 Init(38,15);改为:A.Init(38,1
5、5);Print();改为:A.Print();3-8 (1)Constructing A Constructing B Destructing B Destructing A (2)double a,double b point&p p.x 3-9 class box int len1,len2,len3;public:box(int l1,int l2,int l3)len1=l1;len2=l2;len3=l3;long volumn()return len1*len2*len3;3-10 class Test int m1,m2;public:void Init(int a,int b
6、)m1=a;m2=b;void Pring()coutm1 m2endl;3-11 略 3-12 第四章 4-6 (1)D(2)D(3)D(4)D(5)B (6)D 4-7 (1)static int count=0;这样初始化静态成员值是不对的将其改为 static int count;在类外,main 函数前加 int Sample:count=0;(2)#include /#include using namespace std;class Ctest private:int x;const int y1;public:const int y2;Ctest(int i1,int i2):
7、y1(i1),y2(i2)y1=10;/y1 为常量不能赋值 x=y1;int readme()const;int Ctest:readme()const int i;i=x;x+;/常函数内不能改变成员值 return x;int main()Ctest c(2,8);int i=c.y2;c.y2=i;/y2 为常量,不能改值 i=c.y1;/y1 私有,类外不能访问 return 0;将出错语句全部注释 4-8 (1)题中印刷错误,将 class C 构造函数改为:C()coutconstructor C:;运行结果为:constructor A constructor B constr
8、uctor C (2)40 (3)3 4 3 4-9#include#include class Date int year;int month;int day;public:Date(int y,int m,int d)year=y;month=m;day=d;void disp()coutyear month dayendl;friend int count_day(Date&d,int k);friend int l(int year);friend int h(Date&d1,Date&d2);int count_day(Date&d,int k)static int day_tab2
9、12=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31;/使用二维数组存放各月天数,第一行对应非闰年,第二行对 应闰年 int j,i,s;if(l(d.year)j=1;/闰年,取 1 else j=0;/非闰年,取 0 if(k)/K 非 0 时 s=d.day;for(i=1;id.month;i+)/d.month 为输入的月份 s+=day_tabji-1;else/K 为 0 时 s=day_tabjd.month-d.day;for(i=d.month+1;i=12;i+)s+=day_
10、tabji-1;return s;/S 为相差的天数 int l(int year)if(year%4=0&year%100!=0|year%400=0)/是闰年 return 1;else/不是闰年 return 0;int h(Date&d1,Date&d2)int days,day1,day2,y;if(d1.yeard2.year)/第一个日期年份小于第二个日期年份 days=count_day(d1,0);for(y=d1.year+1;yd2.year;y+)if(l(y)/闰年 days+=366L;else/非闰年 days+=365L;days+=count_day(d2,1
11、);else if(d1.year=d2.year)day1=count_day(d1,1);day2=count_day(d2,1);days=day2-day1;else days=-1;return days;void main()int year1,year2,month1,month2,day1,day2;cout输入日期 1year1month1day1;cout输入日期 2year2month2day2;Date d1(year1,month1,day1),d2(year2,month2,day2);int ds=h(d1,d2);cout输出结果:=0)d1.disp();pr
12、intf(与);d2.disp();printf(之间有%d 天nn,ds);else/第一个日期小于第二个日期 cout时间错误!endl;4-10#include#include class Student int number;char name20;public:Student(int i=0,char*s=0)number=i;strcpy(name,s);/构造学生对象 void Print()/输出结果 coutNumber:numberendl;coutName:namest2.number;/返回成员 number 的比较结果 int main()Student st5=St
13、udent(65,Li),Student(78,Zhang),Student(80,wang),Student(92,zhao),Student(50,zhen);int max=0;int min=0;for(int i=1;i5;i+)if(!greaterthan(stmax,sti)max=i;if(!greaterthan(sti,stmin)min=i;cout最大成绩:endl;stmax.Print();cout最小成绩:endl;stmin.Print();return 0;4-11#include#include using namespace std;class Book
14、 char*name;char*author;int sale;public:Book()name=0;author=0;sale=-1;Book(char*a,char*b,int c)name=new charstrlen(a)+1;strcpy(name,a);author=new charstrlen(b)+1;strcpy(author,b);sale=c;void print()coutautor authorendl;coutname nameendl;coutprice saleendl;Book()if(!name)delete name;if(!author)delete
15、author;int main()Book b1(c+,li ai hua,12);Book b2;return 0;第五章 5-8 改错题答案不唯一 (1)class DC int x;public:DC()x=100;(2)编译无错,但逻辑错误,可改为:class BC protected:int x;public:BC(int i=0)x=i ;class DC:private BC public:DC(int i):BC(i);(3)将 DC 构造函数改为:DC(int i):BC(i)y=0;5-9 (1)base class (2)(10,5)(3,9-18,33)(13,19)(
16、13,19-18,33)(13,19)5-10#include using namespace std;class Shape int x,y;public:Shape(int ix,int iy)x=ix;y=iy;virtual void show()coutpos:x yendl;class Circle:public Shape int radius;public:Circle(int ix,int iy,int r):Shape(ix,iy),radius(r)void show()Shape:show();coutcircle:radiusendl;class Rect:publi
17、c Shape int width,higth;public:Rect(int ix,int iy,int iw,int ih):Shape(ix,iy),width(iw),higth(ih)void show()Shape:show();coutwidth and higth:width higthendl;int main()Shape s1(1,1);Rect r1(2,2,8,8);Circle c1(3,3,9);r1.show();c1.show();return 0;5-11#include class vehicle/定义汽车类 protected:int date;/年份
18、float price;/价格 public:vehicle(int date,float price);int get_date();float get_price();float date_load();void show();class car:public vehicle/定义小车类 int passenger_load;/载人数 public:car(int date,float price,int passengers=4);int get_passengers();void show();class truck:public vehicle/定义卡车类 float payload
19、;/载重量 public:truck(int date,float price,float max_load=24000.00);float efficiency();void show();vehicle:vehicle(int date,float price)vehicle:date=date;vehicle:price=price;int vehicle:get_date()return date;float vehicle:get_price()return price;void vehicle:show()cout 年份:date 年 endl;cout 价格:price 元 en
20、dl;car:car(int date,float price,int passengers):vehicle(date,price)passenger_load=passengers;int car:get_passengers()return passenger_load;void car:show()cout 车型:小车 endl;vehicle:show();cout 载人:passenger_load 人 endl;cout endl;truck:truck(int date,float price,float max_load):vehicle(date,price)payload
21、=max_load;float truck:efficiency()return payload;void truck:show()cout 车型:卡车 endl;vehicle:show();cout 载重:efficiency()endl;cout endl;void main()car car1(2001,2000,5);truck tru1(2002,8000,340000);cout 输出结果 endl;car1.show();tru1.show();第六章 6-4 d=3 D:fun();6-5 C:print(),cinfo=2 C:print(),cinfo=2 D:print
22、(),dinfo=4 B 类不能定义对象,否则编译通不过,因为 B 未定义基类 A 中的虚函数 print(),它也是个虚基类。6-6#include using namespace std;class Mammal public:virtual void Speak()coutin Mammalendl;class Dog:public Mammal public:void Speak()coutdog barkSpeak();return 0;运行结果:dog bark 6-7#include using namespace std;class BaseClass public:virtu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 李爱华 程磊 面向 对象 程序设计 课后 答案 完整版 10953
限制150内