C++面向对象程序设计教程课后习题答案(游洪跃)_第1页
C++面向对象程序设计教程课后习题答案(游洪跃)_第2页
C++面向对象程序设计教程课后习题答案(游洪跃)_第3页
C++面向对象程序设计教程课后习题答案(游洪跃)_第4页
C++面向对象程序设计教程课后习题答案(游洪跃)_第5页
已阅读5页,还剩171页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第1 1章章 C+C+程序设计基础程序设计基础习题解答习题解答 一、选择题一、选择题1下列语句中,错误的是下列语句中,错误的是 。A)const int buffer = 256;B)const int temp;C)const double *point;D)double * const pt = new double(5.5);解析:解析:修饰符修饰符const声明的常量只能被读取,该常量必须在声声明的常量只能被读取,该常量必须在声明时进行初始化,并且它的值在程序中不能改变。选项明时进行初始化,并且它的值在程序中不能改变。选项B)没)没有初始化,错误。选项有初始化,错误。选项C)定义了一

2、个指向)定义了一个指向const double的指的指针,其意义为指针针,其意义为指针 point指向的变量不能通过指针指向的变量不能通过指针point来改变,来改变,D)中表示指针)中表示指针pt是常量指针,已在声明时进行了初始化。是常量指针,已在声明时进行了初始化。答案:答案:B2关于函数重载,下列叙述中错误的是关于函数重载,下列叙述中错误的是 。A)重载函数的函数名必须相同)重载函数的函数名必须相同B)重载函数必须在参数个数或类型上有所不同)重载函数必须在参数个数或类型上有所不同C)重载函数的返回值类型必须相同)重载函数的返回值类型必须相同D)重载函数的函数体可以有所不同)重载函数的函数

3、体可以有所不同解析:解析:函数重载是用同一个函数名字在不同的参数类型或参函数重载是用同一个函数名字在不同的参数类型或参数个数上做类似的操作方作,它们的实现方法可以不同。所数个数上做类似的操作方作,它们的实现方法可以不同。所以说,重载函数的函数名必须相同,函数体可以有所不同。以说,重载函数的函数名必须相同,函数体可以有所不同。函数重载必须在参数类型或参数个数上不一样,不能依靠返函数重载必须在参数类型或参数个数上不一样,不能依靠返回值不一样来区分重载函数。回值不一样来区分重载函数。答案:答案:C3有以下程序:有以下程序:void Fun(int i, int j)cout i + j endl;/

4、 输出输出i+jvoid Fun(int i)cout i+ endl;/ 输出输出i+int main()/ 主函数主函数main()int a = 1;/ 定义变量定义变量iFun(a);/ 调用调用Fun()return 0; / 返回值返回值0, 返回操作系统返回操作系统该程序执行后输出的结果是该程序执行后输出的结果是 。A)1 B)2 C)3 D)4解析:解析:由于主函数中调用的由于主函数中调用的Fun()函数只有一个参数,故执行的是函数只有一个参数,故执行的是void Fun( int i )的版本,执行的版本,执行“cout i+ endl;”时,由于是后缀时,由于是后缀“+”,

5、所以先输出所以先输出i的值的值1,再使,再使i加加1。答案:答案:A二、编程题二、编程题 1编写一个编写一个C+程序,要求输出程序,要求输出“欢迎学习欢迎学习C+语言语言!”。参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std int main()/ 主函数主函数main() cout 欢迎学习欢迎学习C+语言语言! endl;/ 用用C+的方法输出一行的方法输出一行system(PAUSE);/ 调用库函数调用库函数system( ),输出提示信息,输出提示信息return 0; / 返回值返回值,

6、返回操作系统返回操作系统*2编一个程序,用一个函数实现求编一个程序,用一个函数实现求n个整型数据的最小值。函数原型如下:个整型数据的最小值。函数原型如下:int Min(int a, int n)参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std int Min(int a, int n)/ 求求n个整型数据的最小值个整型数据的最小值int m = a0, i;/ 临时变量临时变量for (i = 1; i n; i+)/ 依次比较求最小值依次比较求最小值if (ai m) / 如果如果ai更小更小m

7、= ai;/ ai为当前最小值为当前最小值return m;/ 返回最小值返回最小值int main()/ 主函数主函数main()int a = 1, 2, 3, 4, 5, 6, 7, 8, 9, -10, n = 10; cout 最小值为最小值为 Min(a, n) endl;/ 输出最小值输出最小值system(PAUSE);/ 调用库函数调用库函数system( ),输出提示信息,输出提示信息return 0; / 返回值返回值, 返回操作系统返回操作系统3求求2个数或个数或3个整数中的最大数,用两个同名函数实现,要求编写测试程序。个整数中的最大数,用两个同名函数实现,要求编写测试

8、程序。 参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std int Max(int x, int y)/ 求求x,y的最大值的最大值return x y ? x : y;/ 返回返回x,y的最大值的最大值int Max(int x, int y, int z)/ 求求x,y,z的最大值的最大值int m = x y ? x : y;/ x,y的最大值的最大值m = m z ? m : z;/ m,z的最大值的最大值return m;/ 返回返回x,y,z的最大值的最大值int main()/ 主函数主函

9、数main()cout 2,3的最大值为的最大值为 Max(2, 3) endl; cout 1,6,8的最大值为的最大值为 Max(1, 6, 8) endl;system(PAUSE);/ 调用库函数调用库函数system( ),输出提示信息,输出提示信息return 0; / 返回值返回值, 返回操作系统返回操作系统4用变量的引用作函数形参,实现交换两个整型变量,要求编写测试程序。用变量的引用作函数形参,实现交换两个整型变量,要求编写测试程序。 参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std

10、void Swap(int &x, int &y)/ 交换交换x,y的值的值int t = x; x = y; y = t;/ 循环赋值交换循环赋值交换x,y的值的值int main()/ 主函数主函数main()int x = 1, y = 6;cout 交换前交换前: x , y endl;Swap(x, y);cout 交换后交换后: x , y endl;system(PAUSE);/ 调用库函数调用库函数system( ),输出系统提示信息,输出系统提示信息return 0; / 返回值返回值, 返回操作系统返回操作系统*5编一个程序,用同一个函数名对编一个程序,用同

11、一个函数名对n个数据进行从小到大排序,数据类型可个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。以是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std void Sort(int a, int n)/ 对对a0.an-1进行排序进行排序int tem, i, j;/ 定义变量定义变量for (i = 0; i n- 1; i+)for (j = i + 1; j aj)/ ai比比aj更大更大tem = ai; ai =

12、aj; aj = tem; *5编一个程序,用同一个函数名对编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。以是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:void Sort(float a, int n)/ 对对a0.an-1进行排序进行排序float tem;/ 临时变量临时变量int i, j;/ 定义变量定义变量for (i = 0; i n- 1; i+)for (j = i + 1; j aj)/ ai比比aj更大更大tem = ai; ai = aj; aj =

13、 tem;*5编一个程序,用同一个函数名对编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。以是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:void Sort(double a, int n)/ 对对a0.an-1进行排序进行排序double tem;/ 临时变量临时变量int i, j;/ 定义变量定义变量for (i = 0; i n- 1; i+)for (j = i + 1; j aj)/ ai比比aj更大更大tem = ai; ai = aj; aj = tem;*5

14、编一个程序,用同一个函数名对编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。以是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:int main()/ 主函数主函数main()int a = 1, 3, 2, 5, 6, 9, 0, 6;/ 定义定义afloat b = 1.6, 3.3, 2.8, 5.6, 6.8, 9.6, 0.6, 6.8; / 定义定义bdouble c = 1.2, 3.1, 2.6, 5.8, 6.8, 9.8, 0.8, 6.2;/ 定义定义cin

15、t i, n = 8;/ 定义变量定义变量Sort(a, n);/ 对对a排序排序cout a:;/ 输出提示输出提示for (i = 0; i n; i+)cout ai ;/ 输出输出aicout endl;/ 换行换行*5编一个程序,用同一个函数名对编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。以是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:Sort(b, n);/ 对对b排序排序cout b:;/ 输出提示输出提示for (i = 0; i n; i+)cout b

16、i ;/ 输出输出bicout endl;/ 换行换行Sort(c, n);/ 对对c排序排序cout c:;/ 输出提示输出提示for (i = 0; i n; i+)cout ci ;/ 输出输出cicout endl;/ 换行换行system(PAUSE);/ 调用库函数调用库函数system( ),输出系统提示信息,输出系统提示信息return 0; / 返回值返回值, 返回操作系统返回操作系统第第2 2章章 类和对象类和对象习题解答习题解答 一、选择题一、选择题1下列选项中,不属于面向对象程序设计特征的是下列选项中,不属于面向对象程序设计特征的是 。A)继承性)继承性B)多态性)多态

17、性C)类比性)类比性D)封装性)封装性解析:解析:封装性、继承性和多态性是面向对象思想的封装性、继承性和多态性是面向对象思想的3个主要特征。个主要特征。封装性指将数据和算法捆绑成一个整体,这个整体就是对象,描封装性指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。继承性是指一种事物保留了另一述对象的数据被封装在其内部。继承性是指一种事物保留了另一种事物的全部特征,并且具有自身的独有特征。多态性主要指当种事物的全部特征,并且具有自身的独有特征。多态性主要指当多个事物继承自一种事物时,同一操作在它们之间表现出不同的多个事物继承自一种事物时,同一操作在它们之间表现出不同的

18、行为。行为。答案:答案:C2在面向对象方法中,实现信息隐蔽是依靠在面向对象方法中,实现信息隐蔽是依靠 。A)对象的继承)对象的继承B)对象的多态)对象的多态C)对象的封装)对象的封装D)对象的分类)对象的分类解析:解析:在面向对象方法中,封装性是指将数据和算法捆绑成一个在面向对象方法中,封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在内部,只可整体,这个整体就是对象,描述对象的数据被封装在内部,只可以通过对象提供的算法来进行操作,从而实现信息隐蔽。以通过对象提供的算法来进行操作,从而实现信息隐蔽。答案:答案:C3下列关于类和对象的叙述中,错误的是下列关于类和对象的

19、叙述中,错误的是 。A)一个类只能有一个对象)一个类只能有一个对象B)对象是类的具体实例)对象是类的具体实例C)类是某一类对象的抽象)类是某一类对象的抽象D)类和对象的关系就像数据类型和变量的关系)类和对象的关系就像数据类型和变量的关系解析:解析:在面向对象设计中,类是同一种对象的抽象,而不只是对在面向对象设计中,类是同一种对象的抽象,而不只是对一个对象的抽象,一个类具有多个对象。对象是类的具体实例。一个对象的抽象,一个类具有多个对象。对象是类的具体实例。就像数据类型和变量的关系,一种数据类型可以定义多个变量,就像数据类型和变量的关系,一种数据类型可以定义多个变量,一个变量却只能是一种数据类型

20、。一个变量却只能是一种数据类型。答案:答案:A4有以下类声明:有以下类声明:class MyClass int num; ;则则MyClass类的成员类的成员num是是 。A)公有数据成员)公有数据成员B)公有成员函数)公有成员函数C)私有数据成员)私有数据成员D)私有成员函数)私有成员函数解析:解析:函数声明时,函数名后必须带函数声明时,函数名后必须带“”,所以,所以num是数据是数据成员。在类中,当没有用访问权限标识符标识时,默认为私有权成员。在类中,当没有用访问权限标识符标识时,默认为私有权限。限。答案:答案:C5在下列函数原型中,可以作为类在下列函数原型中,可以作为类AA构造函数的是构

21、造函数的是 。A)void AA(int);B)int AA();C)AA(int) const D)AA(int);解析:解析:构造函数用于初始纶对象的数据成员,没有返回类型,而构造函数用于初始纶对象的数据成员,没有返回类型,而且由于常成员函数不能更新对象的数据成员,所以常成员函数也且由于常成员函数不能更新对象的数据成员,所以常成员函数也不可能作为构造函数。不可能作为构造函数。答案:答案:D6下列关于下列关于this指针的叙述中,正确的是指针的叙述中,正确的是 。A)任何与类相关的函数都有)任何与类相关的函数都有this指针指针B)类的成员函数都有)类的成员函数都有this指针指针C)类的友

22、元函数都有)类的友元函数都有this指针指针D)类的非静态成员函数才有)类的非静态成员函数才有this指针指针解析:解析:this指针只能在类的成员函数中使用,它指向该成员函数指针只能在类的成员函数中使用,它指向该成员函数被调用的对象。但是有两种与类相关的函数都没有被调用的对象。但是有两种与类相关的函数都没有this指针,即指针,即静态成员函数和友元函数。静态成员函数和友元函数。答案:答案:D7有以下程序:有以下程序:class Testprivate:static int n;/ 静态成员静态成员public:Test() n += 2; / 构造函数构造函数Test() n -= 3; /

23、 析构函数析构函数static int GetNum() return n; / 返回返回n; int Test:n = 1;/ 初始化初始化nint main()/ 主函数主函数main()Test *p = new Test;/ 定义指针定义指针pdelete p;/ 释放释放p指向的动太对象指向的动太对象cout n= Test:GetNum() endl;/ 输出输出nreturn 0; / 返回值返回值0, 返回操作系统返回操作系统执行后的输出结果是执行后的输出结果是 。A)n=0 B)n=1 C)n=2 D)n=3解析:解析:静态数据成员初始化的值为静态数据成员初始化的值为1,执行

24、,执行“Test *p = new Test”将调用构将调用构造函数,执行造函数,执行“n += 2;”,n的值变为的值变为3,执行,执行“delete p;”时将调用析构函时将调用析构函数,执行数,执行“n -= 3;”,n的值减的值减3,变为,变为0。答案:答案:A8有以下程序:有以下程序:class MyClassprivate:int n;/ 数据成员数据成员public:MyClass(int k): n(k)/ 构造函数构造函数int Get() return n; / 返回返回nint Get() const return n + 1; / 返回返回n+1;int main()/

25、 主函数主函数main()MyClass a(5);/ 定义对象定义对象aconst MyClass b(6);/ 定义对象定义对象bcout a.Get() b.Get() endl;/ 输出信息输出信息return 0; / 返回值返回值0, 返回操作系统返回操作系统运行后的输出结果是运行后的输出结果是 。A)55 B)57 C)75 D)77解析:解析:const是一个判断重载的标志,是一个判断重载的标志,a.Get调用调用“int Get() return n; ”,故得到故得到5,而常对象,而常对象b执行执行 b.Get”时,调用常成员函数时,调用常成员函数“int Get() co

26、nst return n + 1; ”,故得到,故得到6+1=7。答案:答案:B9由于常对象不能被更新,因此由于常对象不能被更新,因此 。A)通过常对象只能调用它的常成员函数)通过常对象只能调用它的常成员函数B)通过常对象只能调用静态成员函数)通过常对象只能调用静态成员函数C)常对象的成员都是常成员)常对象的成员都是常成员D)通过常对象可以调用任何不改变对象值的成员函数)通过常对象可以调用任何不改变对象值的成员函数解析:解析:通过常对象只能调用类中的常成员函数,而不能调用类中的其他成员通过常对象只能调用类中的常成员函数,而不能调用类中的其他成员函数。函数。答案:答案:A10下列情况中,不会调用

27、复制构造函数的是下列情况中,不会调用复制构造函数的是 。A)用一个对象去初始化同一类的另一个新对象时)用一个对象去初始化同一类的另一个新对象时B)将类的一个对象赋予该类的另一个对象时)将类的一个对象赋予该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象的引用,函数执行返回调用时)函数的返回值是类的对象的引用,函数执行返回调用时解析:解析:只要在程序的执行中,需要用一个对象来初始化另一个对象,都要调只要在程序的执行中,需要用一个对象来初始化另一个对象,都要调用复制构造函数,包括用复制构造函数,包括

28、A、B、C三种情况。三种情况。答案:答案:D11以下关键字不能用来声明类的访问权限的是以下关键字不能用来声明类的访问权限的是 。A)public B)static C)protected D)private解析:解析:类的访问权限有三种:公有、私有、保护,关键字分别是类的访问权限有三种:公有、私有、保护,关键字分别是public,private,protected,。static用于静态成员的声明。用于静态成员的声明。答案:答案:B12有以下程序:有以下程序:class MyClasspublic:MyClass() cout A; / 无参构造函数无参构造函数MyClass(char c)

29、cout c; / 带参构造函数带参构造函数MyClass() cout B; / 析构函数析构函数;int main()/ 主函数主函数main()MyClass a, *p;/ 定义变量定义变量p = new MyClass(X);/ 分配动态空间分配动态空间delete p;/ 释放动态空间释放动态空间cout endl;/ 换行换行return 0; / 返回值返回值0, 返回操作系统返回操作系统执行这个程序,屏幕上将显示输出执行这个程序,屏幕上将显示输出 。A)ABX B)ABXB C)ABXB D)AXBB解析:解析:定义对象定义对象a时,调用一次构造函数时,调用一次构造函数“My

30、Class() cout A; ”,但,但定义对象指针定义对象指针p时不调用构造函数;使用时不调用构造函数;使用new动态创建对象时,根据参数情动态创建对象时,根据参数情况调用况调用“MyClass(char c) cout c; ”,输出,输出X;执行;执行“delete p;”时,时,需要调用一次析构函数,输出需要调用一次析构函数,输出B;最后主函数结束时,对象最后主函数结束时,对象a调用一次析构函调用一次析构函数,输出数,输出B。答案:答案:D13有以下程序:有以下程序:class Testpublic:static int a;/ 静态成员静态成员void Init() a = 1;

31、/ 初始化函数初始化函数Test(int a = 6) Init(); a+;/ 构造函数构造函数;int Test:a = 0;/ 初始化初始化aTest obj;/ 定义全局对象定义全局对象int main()/ 主函数主函数main()cout obj.a endl;/ 输出输出areturn 0; / 返回值返回值0, 返回操作系统返回操作系统运行时输出的结果是运行时输出的结果是 。A)0 B)1 C)2 D)3解析:解析:首先初始化静态数据成员首先初始化静态数据成员a为为0,然后在定义全局对象,然后在定义全局对象obj时调用构造函时调用构造函数。这时有两个数。这时有两个a,一个是,一

32、个是“Test(int a = 6) Init(); a+;”函数中的局部变量函数中的局部变量a,另一个是静态数据成员另一个是静态数据成员a,需要靠作用域来区分。在执行,需要靠作用域来区分。在执行Init()时,由于离开了时,由于离开了构造函数构造函数“Test(int a = 6) Init(); a+;”的作用域,的作用域,Init()里的里的a为静态数据成为静态数据成员,这时静态数据成员员,这时静态数据成员a赋值为赋值为1;之后回到构造函数执行;之后回到构造函数执行a+,这个,这个a为为“Test(int a = 6) Init(); a+;”中的中的a,值变为,值变为7,但当构造函数执

33、行完毕后,但当构造函数执行完毕后,该局部变量该局部变量a随之消失,与对象无关。随之消失,与对象无关。obj.a调用的是静态数据成员,结果为调用的是静态数据成员,结果为1。答案:答案:B14有以下程序:有以下程序:class Testprivate:long x;/ 私有数据成员私有数据成员public:Test(long a): x(a) / 构造函数构造函数friend long Fun(Test s);/ 友元友元;long Fun(Test s)if (s.x = 1 ) return 1;/ 递归结束递归结束else return s.x * Fun(Test(s.x - 1);/ 递

34、归调用递归调用int main()/ 主函数主函数main()int sum = 0;/ 定义变量定义变量for (int i = 0; i 6; i+)sum += Fun(Test(i);/ 累加求和累加求和cout sum endl;/ 输出输出sumreturn 0; / 返回值返回值0, 返回操作系统返回操作系统运行后的输出结果是运行后的输出结果是 。A)120 B)16 C)154 D)34解析:解析:友元函数友元函数Fun()参数表中的对象在初始化时需执行构造函数参数表中的对象在初始化时需执行构造函数“Test:Test(long a)”,调用过程为:先调用构造函数,调用过程为:

35、先调用构造函数Test(i),使,使Test中中x的值为的值为i,再通过友元函数直接访问再通过友元函数直接访问Test.x,执行,执行Fun()中的语句,可得到:中的语句,可得到:Fun(Test(0)=1,Fun(Test(1)=1,Fun(Test(2)=2*1,Fun(Test3)=3*2*1=6,Fun(Test(4)=4*3*2*1=24,Fun(Test(5)=5*4*3*2*1=120,sum=1+1+2+6+24+120=154。答案:答案:C15有以下程序:有以下程序:class Testprivate:int a;/ 数据成员数据成员public:Test() cout 无

36、参构造函数无参构造函数 endl; / 无参构造函数无参构造函数Test(int a) cout a endl; / 带参构造函数带参构造函数Test(const Test &copy): a(copy.a) / 复制构造函数复制构造函数 cout 复制构造函数复制构造函数 endl; Test() cout 析构函数析构函数 endl; / 析构函数析构函数;int main()/ 主函数主函数main()Test a(3);/ 定义对象定义对象return 0; / 返回值返回值0, 返回操作系统返回操作系统运行时的输出结果是运行时的输出结果是 。A)3 B)无参构造函数)无参构造

37、函数C)复制构造函数)复制构造函数D)3 析构函数析构函数 析构函数析构函数 析构函数析构函数解析:解析:创建对象创建对象a时带有参数时带有参数3,故调用构造函数,故调用构造函数Test( int a),输出,输出3并换行;程并换行;程序结束时调用析构函数序结束时调用析构函数Test(),输出,输出“析构函数析构函数”并换行。并换行。答案:答案:D 16有以下程序:有以下程序:class MyClassprivate:int n;/ 数据成员数据成员public:MyClass(int m): n(m) / 构造函数构造函数void Print() const cout const:n= n

38、; / 常成员函数常成员函数void Print() cout n= n ; / 非常成员函数非常成员函数;int main()/ 主函数主函数main()const MyClass obj1(10);/ 常对象常对象MyClass obj2(20);/ 非常对象非常对象obj1.Print();/ 输出信息输出信息obj2.Print();/ 输出信息输出信息cout endl;/ 换行换行return 0; / 返回值返回值0, 返回操作系统返回操作系统程序的输出结果是程序的输出结果是 。A)n=10 const:n=20B)const:n=10 const:n=20C)const:n=1

39、0 n=20D)n=10 n=20解析:解析:根据根据const修饰符选择对应的构造函数,修饰符选择对应的构造函数,objl为常对象,调用常成员函数,为常对象,调用常成员函数,输出输出“const:n=10 ”,obj2为一般对象,调用优先调用非常成员函数,输出为一般对象,调用优先调用非常成员函数,输出“n=20 ”。答案:答案:C二、填空题二、填空题 1在面向对象方法中,在面向对象方法中, 描述的是具有相同属性与操作的描述的是具有相同属性与操作的一组对象。一组对象。 解析:解析:在面向对象设计中,一个对象是由一些属性和操作构成的。在面向对象设计中,一个对象是由一些属性和操作构成的。对象的属性

40、描述了对象的内部细节。类是具有相同属性和操作的对象的属性描述了对象的内部细节。类是具有相同属性和操作的一组对象的集合,它为属于该类的所有对象提供统一的抽象描述。一组对象的集合,它为属于该类的所有对象提供统一的抽象描述。答案:答案:类类 2非成员函数应声明为类的非成员函数应声明为类的 函数才能访问这个类的函数才能访问这个类的private成员。成员。 解析:解析:类具有数据封装和隐藏的特性,通常只有类的成员函数才类具有数据封装和隐藏的特性,通常只有类的成员函数才能访问类的私有成员,外部函数只能访问类的公有成员。但在某能访问类的私有成员,外部函数只能访问类的公有成员。但在某些情况下,需要在类的外部

41、访问类的私有成员,这时必须依靠引些情况下,需要在类的外部访问类的私有成员,这时必须依靠引入友元来实现。入友元来实现。答案:答案:友元友元 3下列程序的输出结果为:下列程序的输出结果为:01试将程序补充完整。试将程序补充完整。class Pointprivate:int x, y;/ 坐标坐标static int count; / 静态数据成员静态数据成员public:Point(int m = 0, int n = 0): x(m), y(n) count+; / 构造函数构造函数Point() count-; / 析构函数析构函数int GetX() const return x; / 返回

42、返回xint GetY() const return y; / 返回返回ystatic void ShowCount() cout count endl; / 输出输出count; / 静态数据成员的初始化静态数据成员的初始化int main()/ 主函数主函数main()Point:ShowCount();/ 输出输出countPoint a(6, 8);/ 定义对象定义对象Point:ShowCount();/ 输出输出countsystem(“PAUSE”); / 调用库函数调用库函数system( ),输出提示信息,输出提示信息return 0; / 返回值返回值0, 返回操作系统返回

43、操作系统。 解析:解析:由第一次调用由第一次调用GetCount()函数输出函数输出count的值为的值为0可知,应将其初始化为可知,应将其初始化为0,再根据静态数据成员的初始化格式:再根据静态数据成员的初始化格式:类型类型 类名类名:静态成员名字静态成员名字 = 值值; 可得横线处填写的语句。可得横线处填写的语句。答案:答案:int Point:count = 0;4有以下类声明:有以下类声明:class MyClassint i;private:int j;protected:int k;public:int m, n;其中私有成员的数量是其中私有成员的数量是 。解析:解析:在用在用cla

44、ss声明类的成员声明中,如果没有标识成员的访问权限,则声明类的成员声明中,如果没有标识成员的访问权限,则默认为私有的访问权限,故默认为私有的访问权限,故i为私有访问权限。为私有访问权限。答案:答案:2 5有以下程序:有以下程序:class Integerprivate:int n;/ 数据成员数据成员public:Integer(int n = 0) = n; / 构造函数构造函数void Show() const cout n n 或或 Integer : n 6有以下程序:有以下程序:class Apublic:A() cout A; / 构造函数构造函数A() cout A; / 析构函

45、数析构函数;int main()/ 主函数主函数main()A *p = new A;/ 定义指针定义指针delete p;/ 释放动态空间释放动态空间cout endl;/ 换行换行system(PAUSE);/ 调用库函数调用库函数system( ),输出系统提示,输出系统提示return 0; / 返回值返回值0, 返回操作系统返回操作系统程序的输出结果是程序的输出结果是 。解析:解析:创建动态对象时需调用创建动态对象时需调用A的构造函数,输出的构造函数,输出“A”;释放动态对象时,;释放动态对象时,调用调用A的析构函数,输出的析构函数,输出“A”。答案:答案:AA 三、编程题三、编程题

46、1定义一个满足如下要求的定义一个满足如下要求的Date类。类。(1)用下面的格式输出日期:)用下面的格式输出日期:年年-月月-日日(2)设置日期。)设置日期。并编出应用程序,定义日期对象,设置日期,输出该对象提供的日期。并编出应用程序,定义日期对象,设置日期,输出该对象提供的日期。参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std class Dateprivate:/ 数据成员数据成员int year;/ 年年int month;/ 月月int day;/ 日日1定义一个满足如下要求的定义一个满足如下

47、要求的Date类。类。(1)用下面的格式输出日期:)用下面的格式输出日期:年年-月月-日日(2)设置日期。)设置日期。并编出应用程序,定义日期对象,设置日期,输出该对象提供的日期。并编出应用程序,定义日期对象,设置日期,输出该对象提供的日期。参考程序参考程序:public:/ 公有函数公有函数Date(int y = 2010, int m = 1, int d = 1):year(y), month(m), day(d)/ 构造函数构造函数void Set(int y, int m, int d)/ 设置日期设置日期 year = y; month = m; day = d; void Sh

48、ow() const/ 显示日期显示日期 cout year - month - day endl; ;int main()/ 主函数主函数main()Date d;/ 定义对象定义对象d.Show();/ 显示日期显示日期d.Set(2016, 6, 18);/ 设置日期设置日期d.Show();/ 显示日期显示日期system(PAUSE);/ 调用库函数调用库函数system( ),输出提示信息,输出提示信息return 0; / 返回值返回值, 返回操作系统返回操作系统2定义一个时间类定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出,能提供和设置由时、分、秒组成的时间

49、,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。应用程序,定义时间对象,设置时间,输出该对象提供的时间。 参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std class Timeprivate:/ 数据成员数据成员int hour;/ 时时int minute;/ 分分int second;/ 秒秒public:/ 公有函数公有函数Time(int h = 0, int m = 0, int s = 0):/ 构造函数构造函数hour(h), minute(m), second(s)vo

50、id Set(int h, int m, int s)/ 设置日期设置日期 hour = h; minute = m; second = s; void Show() const/ 显示日期显示日期 cout hour : minute : second endl; ;int main()/ 主函数主函数main()Time t;/ 定义对象定义对象t.Show();/ 显示时间显示时间t.Set(8, 6, 18);/ 设置时间设置时间t.Show();/ 显示时间显示时间system(PAUSE);/ 调用库函数调用库函数system( ),输出提示信息,输出提示信息return 0; /

51、 返回值返回值, 返回操作系统返回操作系统*3编写设计一个编写设计一个People(人)类。该类的数据成员有姓名(人)类。该类的数据成员有姓名(name)、年龄、年龄(age)、身高、身高(height)、体重、体重(weight)和人数和人数(num),其中人数为静态数据成员,其中人数为静态数据成员,成员函数有构造函数成员函数有构造函数(People)、进食、进食(Eatting)、运动、运动(Sporting)、显示、显示(Show)和显示人数和显示人数(ShowNum)。其中构造函数由已知参数姓名。其中构造函数由已知参数姓名(nm)、年龄、年龄(a)、身高、身高(h)和体重和体重(w)构

52、造对象,进食函数使体重加构造对象,进食函数使体重加1,运动函数使身高加,运动函数使身高加1,显示函数,显示函数用于显示人的姓名、年龄、身高、体重,显示人数函数为静态成员函数,用于用于显示人的姓名、年龄、身高、体重,显示人数函数为静态成员函数,用于显示人数。假设年龄的单位为岁,身高的单位为厘米,体重的单位为市斤,要显示人数。假设年龄的单位为岁,身高的单位为厘米,体重的单位为市斤,要求所有数据成员为求所有数据成员为private访问权限,所有成员函数为访问权限,所有成员函数为public访问权限,在主函访问权限,在主函数中定义若干个对象,通过对象直接访问类的所有非静态成员函数,通过类访数中定义若干

53、个对象,通过对象直接访问类的所有非静态成员函数,通过类访问静态成员函数。问静态成员函数。参考程序参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std class Peopleprivate:/ 数据成员数据成员char name9;/ 姓名姓名int age;/ 年龄年龄int height;/ 身高身高double weight;/ 体重体重static int num;/ 人数人数public:/ 公有函数公有函数People(char nm = 无名氏无名氏, int a = 16, int h = 168

54、, int w = 118):age(a), height(h), weight(w) strcpy(name, nm); num+; void Eatting() weight+; / 进食进食void Sporting() height+; / 运动运动void Show()const/ 显示信息显示信息 cout 个人信息个人信息: endl;cout 姓名姓名: name endl;cout 年龄年龄: age 岁岁 endl;cout 身高身高: height 厘米厘米 endl;cout 体重体重: weight 市斤市斤 endl endl;static void ShowNum

55、()/ 显示人数显示人数 cout 人数人数: num endl; ;int People:num = 0;/ 初始化静态数据成员初始化静态数据成员num int main()/ 主函数主函数main()People p1;/ 定义对象定义对象p1.Show();/ 显示信息显示信息People p2(李敏李敏, 18, 170, 108);/ 定义对象定义对象p2.Eatting();/ 进食进食p2.Sporting();/ 运动运动p2.Show();/ 显示信息显示信息People:ShowNum();/ 显示人数显示人数system(PAUSE);/ 调用库函数调用库函数system

56、( ),输出提示信息,输出提示信息return 0; / 返回值返回值, 返回操作系统返回操作系统*4定义一个描述员工定义一个描述员工(Employee)基本情况的类,数据成员包括编号基本情况的类,数据成员包括编号(num)、姓名姓名(name)、性别、性别(sex)、工资(、工资(wage)、人数)、人数(count)、总工资、总工资(totalWage)。其中姓名定义为长度为其中姓名定义为长度为18的字符数组,性别为为长度为的字符数组,性别为为长度为3的字符数组,其它数的字符数组,其它数据成员类型为整型,总工资和人数为静态数据成员,函数成员包括构造函数、据成员类型为整型,总工资和人数为静态

57、数据成员,函数成员包括构造函数、显示基本数据函数显示基本数据函数(ShowBase)和显示静态数据函数和显示静态数据函数(ShowStatic),其中构造,其中构造函数由已知参数编号函数由已知参数编号(nu) 、姓名、姓名(nm) 、性别、性别(sx)和工资和工资(wg)构造对象,显示基构造对象,显示基本数据函数用于显示学生的编号、姓名、性别和工资,显示静态数据函数为静本数据函数用于显示学生的编号、姓名、性别和工资,显示静态数据函数为静态成员函数,用于显示人数和总工资;要求所有数据成员为态成员函数,用于显示人数和总工资;要求所有数据成员为protected访问权访问权限,所有成员函数为限,所有

58、成员函数为public访问权限,在主函数中定义若干个员工对象,分别访问权限,在主函数中定义若干个员工对象,分别显示员工基本信息,以及显示员工人数和总工资。显示员工基本信息,以及显示员工人数和总工资。 参考程序:参考程序:#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std class Employeeprotected:/ 数据成员数据成员int num;/ 编号编号char name18;/ 姓名姓名char sex3;/ 姓名姓名int wage;/ 工资工资static int count;/ 人数人数static

59、int totalWage;/ 总工资总工资public:/ 公有函数公有函数Employee(int nu, char nm, char sx, int wg): num(nu), wage(wg) strcpy(name, nm); strcpy(sex, sx); count+; totalWage += wg; ; void ShowBase()/ 显示基本数据显示基本数据 cout 个人基本信息个人基本信息: endl;cout 学号学号: num endl;cout 姓名姓名: name endl;cout 性别性别: sex endl;cout 工资工资: wage 元元 end

60、l endl;static void ShowStatic()/ 显示静态数据显示静态数据 cout 人数人数: count endl;cout 总工资总工资: totalWage 元元 endl;int Employee:count = 0;/ 初始化静态数据成员初始化静态数据成员count int Employee:totalWage = 0;/ 初始化静态数据成员初始化静态数据成员totalWageint main()/ 主函数主函数main()Employee e1(1008, 李杰李杰, 男男, 2680);/ 定义对象定义对象e1.ShowBase();/ 显示基本数据显示基本数据Employee e2(1009, 李敏李敏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论