欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    李爱华、程磊_面向对象程序设计课后答案(完整版)10953.pdf

    • 资源ID:84909624       资源大小:594.08KB        全文页数:37页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    李爱华、程磊_面向对象程序设计课后答案(完整版)10953.pdf

    第二章 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 using 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 age)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)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,15);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)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):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 constructor 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_tab212=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_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);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();printf(与);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=Student(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 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 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)(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:public 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;/年份 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;/载重量 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 元 endl;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=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(),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:virtual BaseClass()coutdestruct Baseendl;class Derived:public BaseClass public:Derived()coutdestruct derivedendl;int main()BaseClass*pbase;pbase=new Derived;delete pbase;结果将不能正常执行子类析构 6-8#include using namespace std;class Shape public:virtual double Area()=0;class Circle:public Shape double radius;public:Circle(double r):radius(r)double Area()return 3.14*radius*radius;class Square:public Shape double radius;public:Square(double r):radius(r)double Area()return 6*radius*radius;class Rectangle:public Shape double width,radius;public:Rectangle(double w,double r):radius(r)width=w;double Area()return width*radius;class Trapezoid:public Shape double height,radius,length;public:Trapezoid(double h,double r,double l):radius(r)height=h;length=l;double Area()return height*(radius+length)/2;class Triangle:public Shape double height,radius;public:Triangle(double h,double r):radius(r)height=h;double Area()return height*radius/2;int main()double AreaSum=0;Shape*pS6;pS1=new Circle(1);pS2=new Square(2);pS3=new Rectangle(1,2);pS4=new Trapezoid(4,2,5);pS5=new Triangle(4,2);AreaSum+=pS1-Area();AreaSum+=pS2-Area();AreaSum+=pS3-Area();AreaSum+=pS4-Area();AreaSum+=pS5-Area();cout总面积是:AreaSumendl;cout各三维图形面积如下:endl;cout圆形:Area()endl;cout正方形:Area()endl;cout长方形:Area()endl;cout梯形:Area()endl;cout三角形:Area()endl;return 0;6-9#include using namespace std;class Student public:virtual void show()=0;class Junior:public Student public:void show()coutthis would be info for junior studentsendl;class Senior:public Student public:void show()coutthis would be info for Senior studentsshow();pstu=new Senior;pstu-show();return 0;第七章 7-1#include#include using namespace std;class vector int x,y;public:vector(int ix=0,int iy=0)x=ix;y=iy;vector operator+(vector&v1)return vector(x+v1.x,y+v1.y);vector&operator+=(vector&v1)x+=v1.x;y+=v1.y;return*this;void show()cout(x,y)endl;int main()vector v1(1,2),v2(3,4),v3;v3=v1+v2;v1+=v2;v3.show();v1.show();return 0;7-2#include class Complex private:double real,image;public:Complex(double x=0.0,double y=0.0)real=x;image=y;bool operator!=(const Complex&c);Complex operator-(const Complex&c);bool operator=(const Complex&c);Complex operator-();Complex&operator+=(const Complex&c);void Print();void Complex:Print()coutreal+imageiendl;Complex Complex:operator-(const Complex&c)Complex temp(real-c.real,image-c.image);return temp;bool Complex:operator=(const Complex&c)return(real=c.real&image=c.image);bool Complex:operator!=(const Complex&c)return(real!=c.real|image!=c.image);Complex Complex:operator-()return Complex(-real,-image);Complex&Complex:operator+=(const Complex&c)real+=c.real;image+=c.image;return*this;int main()Complex c1(2,7),c2(4,2),c3;c3=c1-c2;c3.Print();if(c3=c1)coutc3 equals to c1endl;else coutc3 doesn?t equale to c1endl;c3=-c2;c3.Print();c3+=c2;c3.Print();if(c3!=c1)coutc3!=c1endl;return 0;7-3#include using namespace std;bool rn(int y)bool flag=0;if(y%400=0|y%4=0&y%100!=0)flag=1;return flag;class Date private:int month,day,year;public:Date(int m,int d,int y);Date&operator+(int days);void showDate();Date:Date(int y,int m,int d)if(m0&m0&d0&y0;)int diff;switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:diff=31-day;break;case 4:case 6:case 9:case 11:diff=30-day;break;case 2:if(rn(year)diff=29-day;else diff=28-day;break;if(idiff)i-=diff+1;day=1;month+;if(month12)year+;month=1;else day+=i;break;return*this;void Date:showDate()coutyear.month.dayendl;int main()Date obj(1996,1,1);obj.showDate();obj=obj+59;obj.showDate();return 0;7-4 以+,=为例#include#include using namespace std;class String char*sbuf;int length;public:String()length=0;sbuf=new char;sbuf0=0;String(char*s)/用字符串初始化 length=strlen(s);sbuf=new charlength+1;strcpy(sbuf,s);String(String&str)length=str.length;sbuf=new charlength+1;strcpy(sbuf,str.sbuf);String()delete sbuf;String&operator=(String&str)if(sbuf=str.sbuf)return*this;else sbuf=new charstr.length+1;strcpy(sbuf,str.sbuf);return*this;String operator+(String&str)/此函数需配合拷贝构造函数 String st;st.length=length+str.length;st.sbuf=new charst.length+1;st.sbuf 0=0;strcpy(st.sbuf,sbuf);strcat(st.sbuf,str.sbuf);return st;char&operator(int i)if(i=length)/对下标进行检查,超出范围则报错退出程序 cout下标越界错误!endl;exit(0);return sbufi;void Show()coutsbufendl;int main()String s1(hello);String s2(world),s3;s3=s1+s2;/s3.Show();return 0;7-6#include /using namespace std;class polynomial int n,i;float*a;public:polynomial(int x)n=x;a=new float n;polynomial(const polynomial&p)/增加一个拷贝复制构造函数 n=p.n;a=new float p.n;for(int i=0;ip.n;i+)ai=p.ai;polynomial()polynomial()deletea;void seta(int y,float x)cout cout ay=x;void print()y=an-1 x(n-1=0;i-)+ai x(i);cout=x.n)polynomial t(n);copy(t,*this);for(i=0;ix.n;i+)/ix.n t.ai=t.ai+x.ai;return t;else polynomial t(x.n);copy(t,x);for(i=0;i=x.n)polynomial t(n);copy(t,*this);for(i=0;i=x.n;i+)t.ai=t.ai-x.ai;return t;else polynomial t(x.n);copy(t,x);for(i=0;i=n;i+)t.ai=t.ai-ai;return t;friend void void copy(polynomial&x,polynomial&y);copy(polynomial&x,polynomial&y)if int i;(x.ny.n)cout 无法复制 endl;x.print();y.print();/system(pause);for(i=0;i=y.n-1;i+)x.ai=y.ai;void main()polynomial j(3),k(4),h(4);j.seta(0,1);j.seta(1,2);j.seta(2,3);k.seta(0,5);k.seta(1,6);k.seta(2,7);k.seta(3,7);j.print();k.print();polynomial m=k+j;/在这里再定义一个 m copy(h,k+j);h.print();/system(pause);第八章 8-1 (1)template T fun(T a).(2)template T test(T a).(3)template class Array public:void fun();template void Array:fun().(4)Array a1,a2,a3;8-4#include using namespace std;template T max(T a,T b,T c)T temp;temp=ab?a:b;temp=tempc?temp:c;return temp;int main()coutmax(11,29,22)endl;coutmax(3.14f,28.3f,6.7f)endl;coutmax(c,b,a)endl;return 0;8-5 及 8-6#include#include using namespace std;template void sort_bubble(T arr,int n)for(int i=0;in-1;i+)for(int j=0;jn-1-i;j+)if(arrjarrj+1)T temp;temp=arrj;arrj=arrj+1;arrj+1=temp;class student int num;string name;public:student(int n=0,string ns=)num=n;name=ns;bool operator(student s1)return(nums1.num);void print()coutnum name;coutendl;int main()int arri=2,4,1,43,56,78;float arrf=1.2f,4.5f,21.4f,98.9f;sort_bubble(arri,6);sort_bubble(arrf,4);for(int i=0;i6;i+)coutarrii;coutendl;student stuarr=student(3,liqing),student(1,liou),student(4,cha);sort_bubble(stuarr,3);for(i=0;i3;i+)stuarri.print();for(i=0;i4;i+)coutarrfi;coutendl;return 0;其他略 第十章 10-1 (1)B(2)B(3)A(4)C(5)A 10-2 10-3#include#include using namespace std;int main()fstream fs;ofstream fsc(d:lqing01.txt);fs.open(D:lin.txt,ios:in|ios:out);if(!fs)coutcant open fileendl;exit(-1);for(int i=1;i51;i+)fs.put(65);if(i%5=0&i!=50)fs.put(n);fs.put(-1);char ch;int count=1;cout count ;/fsc.put(count+0);fsccount;fsc.put();fs.seekg(0,ios:beg);fs.get(ch);while(ch!=-1)cout ch;fsc.put(ch);if(ch=n)count+;coutcount ;/fsc.put(count+0);fsccount;fsc.put();fs.get(ch);fs.close();fsc.close();/读回来看看 coutendl;coutendl;cout endlendl;ifstream fr(d:lqing01.txt);if(!fr)coutfailed to open lqing01.txtendl;exit(-1);char cha20;while(fr.getline(cha,20)coutchaendl;return 0;/将文件 lin 加行号写入 lqing01_txt 10-4#include#include using namespace std;int main()ofstream of(d:01.txt,ios:app);/文件 01.txt 应已存在 ifstream ifs(d:02.txt);if(!of|!ifs)coutch)ofch;of.close();ifs.close();return 0;

    注意事项

    本文(李爱华、程磊_面向对象程序设计课后答案(完整版)10953.pdf)为本站会员(得**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开