ImageVerifierCode 换一换
格式:DOCX , 页数:57 ,大小:28.43KB ,
资源ID:7105319      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7105319.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++面向对象程序设计课后题答案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++面向对象程序设计课后题答案.docx

1、C+面向对象程序设计课后题答案面向对象程序设计课后题答案 面向对象程序设计课后题答案 第二章 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】程序的运行结果:10 20【2.22】编写一个 C+风格的程序,用动态分配空间的方法计算 Fibonacci 数列的前 20项并存储到动态分配的空间中。#include int main()int*p,i;p=new int20;p0=1;p1=1;fo

2、r(i=2;i20;i+)pi=pi-1+pi-2;for(i=0;i20;i+)coutpiendl;return 0;【2.23】编写一个 C+风格的程序,建立一个被称为 sroot()的函数,返回其参数的二次方根。重载 sroot()3 次,让它返回整数、长整数与双精度数的二次方根。#include#include double sroot(int m)return sqrt(m);double sroot(long m)return sqrt(m);double sroot(double m)return sqrt(m);int main()coutsroot(145)=sroot(1

3、45)endl;coutsroot(123456)=sroot(123456)endl;coutsroot(1.44)=sroot(1.44)endl;return 0;【2.24】编写一个 C+风格的程序,解决百钱问题:将一元人民币兑换成 1、2、5分的硬币,有多少种换法?#include int main()int k=0;for(int i=0;i=20;i+)for(int j=0;j=0)k+;cout将一元人民币兑换成 1、2、5分的硬币,共有k种换法endl;return 0;【2.25】编写一个 C+风格的程序,输入两个整数,将它们按由小到大的顺序输出。要求使用变量的引用。vo

4、id change(int&a,int&b)int t=a;a=b;b=t;int main()int m,n;coutmn;if(mn)change(m,n);cout这两个数从小到大依次为:m nendl;return 0;【2.26】编写一个 C+风格的程序,用二分法求解 f(x)=0 的根。假设方程为:2*x*x*x-4*x*x+3*x-6=0#include#include using namespace std;double f(double x)return 2*x*x*x-4*x*x+3*x-6;int main()double left,right,middle,ymid,y

5、left,yright;coutleftright;yleft=f(left);yright=f(right);if(yleft*yright0)cout您输入的两个数,用二分法无法求得方程的根endl;exit(0);do middle=(left+right)/2;ymid=f(middle);if(yleft*ymid0)right=middle;yright=ymid;if(yright*ymid=1e-6);cout方程的根为:middleendl;return 0;第三章 类和对象【3.6】假设在程序中已经声明了类 point,并建立了其对象 p1和 p4。请回答以下几个语句有什么

6、区别?(1)point p2,p3;(2)point p2=p1;(3)point p2(p1);(4)p4=p1;【解答】语句(1)使用带默认参数的构造函数,或不带参数的构造函数,定义了point 类的两个对象 p2,p3;语句(2)在建立新对象 p2时,用已经存在的对象 p1去初始化新对象 p2,在这个过程中用“赋值法”调用了拷贝构造函数;语句(3)在建立新对象 p2时,用已经存在的对象 p1去初始化新对象 p2,在这个过程中用“带入法”调用了拷贝构造函数;【3.7】B【3.8】C【3.9】C【3.10】B【3.11】B【3.12】A【3.13】A【3.14】B【3.15】A【3.16】B

7、【3.17】B【3.18】写出下面程序的运行结果。10,20 30,48 50,68 70,80 90,16 11,120【3.19】写出下面程序的运行结果。Constructing 10 Destructing 100 Destructing【3.20】写出下面程序的运行结果。3 objects in existence 4 objects in existence after allocation 3 objects in existence after delection【3.21】写出下面程序的运行结果。Counting at 0 Counting at 1 Counting at 2

8、 Counting at 3 Counting at 4 Counting at 5 Counting at 6 Counting at 7 Counting at 8 Counting at 9【3.22】写出下面程序的运行结果。Default constructor called.Default constructor called.Default constructor called.Constructor:a=1,b=2 Constructor:a=3,b=4 Constructor:a=5,b=6【3.23】写出下面程序的运行结果。Con.Copy con.default.【3.24

9、】写出下面程序的运行结果。A=5 B=14 A=9 B=14【3.25】写出下面程序的运行结果。5,7 22,25【3.26】写出下面程序的运行结果。Constructing Constructing A=5 B=15 Destructing A=10 B=15 Destructing Destructing Destructing【3.27】指出下列程序中的错误,并说明为什么。class Student char name10;int age;float aver;void printStu();void main()Student p1,p2,p3;p1.age=30;/Error:age

10、 为私有成员,不能在类外直接访问 【3.28】指出下列程序中的错误,并说明为什么。class Student int age;int sno;public:/*在成员函数定义前加 public,不然默认为 private,则在主函数中不能调用私有的成员函数*/void printStu();void setSno(int d);void setAge(int a);/添加成员函数的声明;void printStu()/类外定义成员函数需加类名:,改为:void Student:printStu()coutnStudent No.is sno,;coutage is age.endl;void

11、setSno(int s)/类外定义成员函数需加类名:,改为:void Student:setSno(int s)sno=s;void setAge(int a)/类外定义成员函数需加类名:,改为:void Student:setAge(int a)age=a;void main()Student lin;lin.setSno(20021);lin.setAge(20);lin.printStu();【3.29】指出下列程序中的错误,并说明为什么。class Point public:int x,y;private:Point()/构造函数不能说明为 private的 x=1;y=2;void

12、 main()Point cpoint;cpoint.x=2;构造函数 Point 是私有的,语句“Point copint;”执行时出现错误。错误的原因是:类Point 的构造函数是私有函数,创建对象 cpoint 时不能调用它。【3.30】下面是一个计算器类的定义,请完成该类成员函数的实现。#include using namespace std;class Counter public:Counter(int number);void increment();/给原值加 1 void decrement();/给原值减 1 int getValue();/取得计数器值 int print

13、();/显示计数 private:int value;counter:counter(int number)value=number;void counter:increment()value+;void counter:decrement()value-;int counter:getvalue()return value;int counter:print()coutnvalue is:valueendl;return 0;void main()counter op(10);op.print();op.decrement();op.print();op.increment();op.pri

14、nt();【3.31】根据注释语句的提示,实现类 Date 的成员函数。#include using namespace std;class Date public:void printDate();/显示日期 void setDay(int d);/设置日的值 void setMonth(int m);/设置月的值 void setYear(int y);/设置年的值 private:int day,month,year;void Date:printDate()coutyear/month/dayendl;void Date:setDay(int d)day=d;void Date:set

15、Month(int m)month=m;void Date:setYear(int y)year=y;int main()Date testDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2003);testDay.printDate();return 0;【3.32】建立类 cylinder,cylinder 的构造函数被传递了两个 double 值,分别表示圆柱体的半径和高度。用类 cylinder计算圆柱体的体积,并存储在一个 double变量中。在类 cylinder 中包含一个成员函数 vol(),用来显示每个 c

16、ylinder 对象的体积。#include using namespace std;const double PI=3.1415926;class Cylinder double radius,height,volume;public:Cylinder(double r,double h)radius=r;height=h;volume=PI*radius*radius*height;void vol()coutthe volume isvolumeendl;int main()Cylinder c(2,5);c.vol();return 0;【3.33】构建一个类 book,其中含有两个私

17、有数据成员 qu 和 price,建立一个有 5个元素的数组对象,将 qu初始化为 15,将 price初始化为 qu的 10倍。显示每个对象的 qu*price值。【3.34】修改上题,通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的 qu*price值。#include using namespace std;class Book private:int qu,price;public:Book(int i);void print();void printqandp();Book:Book(int i)qu=i;price=qu*10;void Book:print()coutt

18、he Books qu is:quendl;coutthe Books price is:priceendl;void Book:printqandp()coutthe Books qu*price is:qu*priceendl;void main()Book a5=1,2,3,4,5;int i;for(i=0;i 5;i+)ai.print();Book*b=&a4;/逆序显示数组元素 for(i=0;i printqandp();b-;Book*c=a;/顺序显示数组元素 for(i=0;i printqandp();c+;/或者 class Book private:int qu,p

19、rice;public:Book(int q,int p);void print();void printqandp();Book:Book(int q,int p)qu=q;price=p;void Book:print()coutthe Books qu is:quendl;coutthe Books price is:priceendl;void Book:printqandp()coutthe Books qu*price is:qu*priceendl;void main()Book a5=Book(1,10),Book(2,20),Book(3,30),Book(4,40),Boo

20、k(5,50);int i;for(i=0;i 5;i+)ai.print();Book*b=&a4;/逆序显示数组元素 for(i=0;i printqandp();b-;Book*c=a;/顺序显示数组元素 for(i=0;i printqandp();c+;【3.35】构建一个类 Stock,含字符数组 stockcode及整型数据成员 quan、双精度型数据成员 price。构造函数含 3个参数:字符数组 na及 q、p。当定义 Stock的类对象时,将对象的第一个字符串参数赋给数据成员 stockcode,第 2个和第 3个参数分别赋给 quan和 price。未设置第 2 个和第

21、3 个参数时,quan的值为 1000,price的值为8.98。成员函数 print()没有形参,需使用 this 指针,显示对象数据成员的内容。假设类Stock第 1 个对象的三个参数为:“600001”、3000 和 5.67,第 2个对象的第 1个数据成员的值是“600001”,第 2 和第 3个数据成员的值取默认值。要求编写程序分别显示这两个对象数据成员的值。#include#include using namespace std;class Stock public:Stock(char na,int q=1000,double p=8.98);print();private:ch

22、ar stockcode16;int quan;float price;Stock:Stock(char na,int q,double p)strcpy(stockcode,na);quan=q;price=p;Stock:print()coutstocknode:stockcode quan:quan;cout price:priceendl;void main()Stock a(600001,3000,5.67);Stock b(600001);a.print();b.print();【3.36】编写一个程序,已有若干学生的数据,包括学号、姓名、成绩,要求输出这些学生的数据并计算出学生人

23、数和平均成绩(要求将学生人数和总成绩用静态数据成员表示)。#include#include using namespace std;class Student string name;string sno;double score;static int num;static double sum;public:Student(string n,string no,double s);void print();static double getAverage();static double gettotal();static int getnum();int Student:num=0;doub

24、le 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;int Student:getnum()return num;double Student:getAverage()if(num=0)return 0;else return sum/num;double Student:gettotal()return sum;int main()cout当

25、前学生人数为:Student:getnum()学生的总成绩为:Student:gettotal()学生的平均成绩为:Student:getAverage()endl;Student s1(12012,张明,80);s1.print();cout当前学生人数为:s1.getnum()学生的总成绩为:s1.gettotal()学生的平均成绩为:s1.getAverage()endl;Student s2(09615,李涛,50);s2.print();cout当前学生人数为:s2.getnum()学生的总成绩为:s2.gettotal()学生的平均成绩为:s2.getAverage()endl;S

26、tudent s3(12016,王晓,90);s3.print();cout当前学生人数为:s3.getnum()学生的总成绩为:s3.gettotal()学生的平均成绩为:s3.getAverage()endl;return 0;第四章 派生类与继承【4.8】A【4.9】C【4.10】C【4.11】B【4.12】程序运行结果:Constructor B2 Constructor B1 Constructor A 3 2 1【4.13】程序运行结果:主食=bread 副食=steak【4.14】程序运行结果:0,0,0 0,1,0 3,6,9【4.15】程序运行结果:Constructor B

27、2.2 Constructor B1.1 Constructor B3.3 Constructor A.4 1 2 4,3【4.16】程序运行结果:4【4.17】程序运行结果:(1,2)5,6(6,9)【4.18】程序运行结果:class base1 class base2 class level2 class base2 class level1 class toplevel【4.19】下面的程序可以输出 ASCII字符与所对应的数字的对照表。修改下列程序,使其可以输出字母 a到 z(或任意两个字符间)与所对应的数字的对照表。#include using namespace std;#inc

28、lude class table public:table(int p,int q)i=p;j=q;void ascii(void);protected:int i,j;void table:ascii(void)int k=1;int m;for(m=i;m=j;m+)coutsetw(4)m(char)m;if(k%12=0)coutn;k+;coutendl;class der_table:public table public:der_table(int p,int q,char*m):table(p,q)c=m;void print(void);protected:char*c;vo

29、id der_table:print(void)coutcendl;table:ascii();void main()der_table ob(a,z,ASCII value-char);ob.print();ob.print();【4.20】#include using namespace std;class area_cl protected:double height;double width;public:area_cl(double r,double s)height=r;width=s;virtual double area()=0;class rectangle:public a

30、rea_cl public:rectangle(int h,int w):area_cl(h,w)double area()return height*width;class isosceles:public area_cl public:isosceles(int h,int w):area_cl(h,w)double area()return 0.5*height*width;int main()rectangle r(10,5);isosceles i(4,6);area_cl*p;p=&r;cout矩形的面积为:area()endl;p=&i;cout三角形的面积为:area()end

31、l;return 0;【4.21】已有类 Time 和 Date,要求设计一个派生类 Birthtime,它继承类 Time和Date,并且增加一个数据成员 Childname 用于表示小孩的名字,同事设计主程序显示一个小孩的出生时间和名字。#include#include using namespace std;class Time public:Time(int h,int m,int s)hours=h;minutes=m;seconds=s;void display()cout出生时间:hours时minutes分seconds秒endl;protected:int hours,min

32、utes,seconds;class Date public:Date(int m,int d,int y)month=m;day=d;year=y;virtual void display()cout出生年月year年month月day日endl;protected:int month,day,year;class Birthtime:public Time,public Date private:string Childname;public:Birthtime(string name,int y,int mon,int d,int h,int m,int s):Date(mon,d,y)

33、,Time(h,m,s)Childname=name;void display()cout小孩的姓名为:Childname n;Date:display();Time:display();int main()Birthtime mary(Mary,2013,1,1,13,25,40);mary.display();Birthtime jack(Jackson,2000,11,11,23,55,10);jack.display();return 0;【4.22】编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、系别和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名、输入和显示设计成一个类 Person,并作为学生类 Student 和教师类 Teacher的基类。#include#include using namespace std;class Person strin

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1