C面向对象程序设计Word版

上传人:博****1 文档编号:498246293 上传时间:2023-10-09 格式:DOC 页数:23 大小:106.50KB
返回 下载 相关 举报
C面向对象程序设计Word版_第1页
第1页 / 共23页
C面向对象程序设计Word版_第2页
第2页 / 共23页
C面向对象程序设计Word版_第3页
第3页 / 共23页
C面向对象程序设计Word版_第4页
第4页 / 共23页
C面向对象程序设计Word版_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C面向对象程序设计Word版》由会员分享,可在线阅读,更多相关《C面向对象程序设计Word版(23页珍藏版)》请在金锄头文库上搜索。

1、 第2章 C+的初步知识【2.3】【解】B【2.4】【解】C【2.5】【解】C【2.6】【解】C【2.7】 【解】C【2.8】【解】A【2.9】【解】B【2.10】 【解】D【2.11】【解】D【2.12】解】 C【2.13】【解】 D说明:“int *p=new int(5);”表示动态分配1个整型内存空间,初值为5;“int *p=new int5;”表示动态分配5个整型内存空间;“int *p=new int;”表示动态分配1个整型内存空间;“int *p=new int5(0)”想给一个数组分配内存空间时,对数组进行初始化,这是不允许的。【2.14】 【解】 D说明:name被定义为指

2、向常量的常指针, 这个指针变量所指的地址不能改变,它所指向的地址中的数据也不能改变。“name3=a;”修改了name所指向的地址中的数据,“name=lin;”和“name=new char5;”修改了name所指的地址,只有D输出一个字符是正确的。【2.15】 【解】 A说明:name被定义常指针,它所指向的地址中的数据能改变,但它所指的地址不能改变。“name3=q;”修改了name所指向的地址中的数据,是正确的。而“name=lin;”、“name=new char5;”和“name=new char(q);”以不同的方法修改了name所指的地址,都是错误的。【2.16】【解】 A说明

3、:name被定义指向常量的指针, 它所指向的地址中的数据不能改变,但它所指的地址可以修改,而“name3=q;”修改了name所指向的地址中的数据,是错误的。“name=lin;” 、“name=new char5;”和“name= new char(q)”以不同的方法修改了name所指的地址,都是正确的。【2.17】【解】C【2.18】【解】 D说明:C+中不能建立引用数组和指向引用的指针,也不能建立引用的引用。所以A、B、C是错误的,D是正确的。【2.19】【解】A【2.20】【解】B【2.21】【解】(1) 这两个函数原型是等价的,因为函数原型中的参数名可以缺省。(2) 这两个函数的第一

4、行是不等价的,函数的第一行中必须包含参数名。【2.23】【解】本程序的运行结果如下:x+y=65【2.24】【解】本程序的运行结果如下:101说明: 在语句“:i=i+1;”中赋值号左边“:i”的中i是全局变量,赋值号右边的i是局部变量。所以执行该语句的结果是将局部变量i的值加1(即101)后赋值给全局变量i。【2.25】【解】本程序的运行结果如下:10 10说明:函数f(&m,n)中 第1个参数是引用参数, 引用参数是一种按地址传递参数的方法,对其的调用是传地址调用;而第2个参数是变量参数,对它的调用是传值调用。所以调用函数f后, 实参a的值被改为10, 实参b的值不变,仍为10。【2.26

5、】【解】本程序的运行结果如下:1020说明:函数f的参数是变量的引用, 对它的调用是传地址调用,所以函数f调用后,主函数中k的值变为10。又由于m是对函数f的引用,当m被赋值为20时,k的值也变为20 。【2.27】 【解】程序的作用是:输入3个整数,然后输出其中值最大的数。在主函数中输入3个整数,然后调用f函数,在f函数中实现找最小的整数,用if语句比较两个数,将大者存放在变量m中,经过两个if语句的比较,m中存放的是3个整数中最大的数。运行情况如下:2 4 7 (输入3个整数)7 (输出其中最大的数)【2.28】 【解】实现本题功能的程序如下:#include#includeusing n

6、amespace std;int main() float x,y; coutxy; float z=pow(x,y); coutpow(x,y)=zendl; return 0;本程序的运行结果是:please input 2 floats to x,y:2.1 3pow(2.1,3)=9.261说明:由于要用到系统函数pow(x,y),所以要包含头文件cmath。【2.29】【解】实现本题功能的程序如下:#include using namespace std;int main() int *p=new int20; /动态分配20个整型内存空间 *p=1; *(p+1)=1; /对前面2

7、个内存空间赋值1 cout*pt*(p+1)t; p=p+2; /p指向第3个内存空间 for (int i=3;i=20;i+) *p=*(p-1)+*(p-2); cout*pt; if (i%5=0) coutendl;p+; /p指向下一个内存空间;return 0;本程序的运行结果是:1 1 2 3 58 13 21 34 5589 144 233 377 610987 1597 2584 4181 6765【2.30】 【解】实现本题功能的程序如下:#include #include using namespace std;double sroot(int i) return sq

8、rt(i);double sroot(long l) return sqrt(l); double sroot(double d) return sqrt(d);int main() int i=12; long l=1234; double d=12.34;couti的二次方根是:sroot(i)endl;coutl的二次方根是:sroot(l)endl;coutd的二次方根是:sroot(d)endl;return 0;本程序的运行结果是:i的二次方根是:3.4641l的二次方根是:35.1283d的二次方根是:3.51283第3章 类和对象3.1 习题参考解答【3.1】 【解】 类声明的

9、一般格式如下:class 类名public: 公有数据成员;公有成员函数;private:私有数据成员;私有成员函数; ;类的声明由关键字class打头,后跟类名,花括号中是类体,最后以一个分号“;”结束。【3.2】【解】C【3.3】【解】B【3.4】【解】B【3.5】【解】D【3.6】【解】B说明:C+中对构造函数有一些规定:不能带返回值;可以不带参数;也可以缺省定义;但构造函数的名字与类名必须完全相同。【3.7】【解】B【3.8】【解】C【3.9】【解】C【3.10】【解】B【3.11】【解】C说明:C+中对析构函数也有一些规定:没有参数;不能重载;析造函数的名字与是在类名前加“”;析构函

10、数不能指定返回类型。【3.12】 【解】C【3.13】【解】C【3.14】【解】B【3.15】【解】D【3.16】 【解】语句(1)使用带默认参数的构造函数,或不带参数的构造函数,定义了point类的两个对象p2和p3;语句(2)在建立新对象p2时,用已经存在的对象P1去初始化新对象p2,在这个过程中用“赋值法”调用了拷贝构造函数。语句(3)在建立新对象p2时,用已经存在的对象P1去初始化新对象p2,在这个过程中用“代入法”调用了拷贝构造函数。语句(4)将对象p1数据成员的值拷贝到对象p4中, 这个过程是通过默认赋值运算符函数实现的。【3.17】【解】本程序的运行结果如下:Exit maind

11、st 55【3.18】【解】本程序的运行结果如下: Counting at 0 Counting at 1 Counting at 2 Counting at 3 Counting at 4 Counting at 5 Couhting at 6 Counting at 7 Counting at 8 Counting at 9说明:在本程序中主函数main只包括了一个return语句,但竟然有内容输出!什么时候调用了构造函数?我们知道,构造函数在对象被定义时调用。那么对象anObject是何时被调用的呢?在主函数main之前,语句“test anObject”处。【3.19】【解】本程序的运

12、行结果如下:Con.Copy con.default.【3.20】【解】 第1个错误:printStu()和setSno两个成员函数没有用public定义,不允许外部函数对对象进行操作。第2个错误:成员函数在类外定义,应加上类名“Student:”。第3个错误:setAge应在类中说明,并且在类外定义时,应加上类名“Student:”。【3.21】【解】构造函数Point是私有的,语句“Point cpoint;”执行时出现错误。【3.22】【解】 实现本题功能的程序如下:#include using namespace std;class Circlepublic: Circle(float

13、 r)radius=r; float area()return 3.14*radius*radius;private: float radius;int main() float r;coutr;Circle p(r);cout半径为r的圆的面积为:p.area()endl;return 0;程序的运行结果是:请输入圆的半径:3半径为3的圆的面积为:28.26【3.23】 【解】实现本题功能的程序如下:#include using namespace std;class cylinderpublic: cylinder(double a,double b); void vol();private: double r,h; double volume;cylinder:cylinder(double a,double b)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号