收藏 分销(赏)

C++面向对象程序设计教程课后习题答案游洪跃省公共课一等奖全国赛课获奖课件.pptx

上传人:精*** 文档编号:4153733 上传时间:2024-08-05 格式:PPTX 页数:176 大小:624KB
下载 相关 举报
C++面向对象程序设计教程课后习题答案游洪跃省公共课一等奖全国赛课获奖课件.pptx_第1页
第1页 / 共176页
C++面向对象程序设计教程课后习题答案游洪跃省公共课一等奖全国赛课获奖课件.pptx_第2页
第2页 / 共176页
C++面向对象程序设计教程课后习题答案游洪跃省公共课一等奖全国赛课获奖课件.pptx_第3页
第3页 / 共176页
C++面向对象程序设计教程课后习题答案游洪跃省公共课一等奖全国赛课获奖课件.pptx_第4页
第4页 / 共176页
C++面向对象程序设计教程课后习题答案游洪跃省公共课一等奖全国赛课获奖课件.pptx_第5页
第5页 / 共176页
点击查看更多>>
资源描述

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

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

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

4、 endl;/输出输出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;”时,因为是后缀时,因为是后缀“+”,所以,所以先输出先输出i值值1

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

6、个函数实现求编一个程序,用一个函数实现求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=ai;/ai为当前最小值为当前最小值 return m;/返回最小值返回最小值int m

7、ain()/主函数主函数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;/返回值返回值,返回操作系统返回操作系统第6页3求求2个数或个数或3个整数中最大数,用两个同名函数实现,要求编写测试程序。个整数中最大数,用两个同名函数实现,要求编写测试程序。参考程序参考程序:#include /编译预处理命令编译预处理命令using namespace std;/使用命名空间使用命名空间s

8、td 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()/主函数主函数main()cout 2,3最大值为最大值为 Max(2,3)endl;cout 1,6,8最大值为最大值为 Max(1,6,8)endl;system(PAUSE);/调用库函数调用库函数system(),输出提醒信

9、息,输出提醒信息return 0;/返回值返回值,返回操作系统返回操作系统第7页4用变量引用作函数形参,实现交换两个整型变量,要求编写测试程序。用变量引用作函数形参,实现交换两个整型变量,要求编写测试程序。参考程序参考程序:#include /编译预处理命令编译预处理命令using namespace std;/使用命名空间使用命名空间std 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

10、(x,y);cout 交换后交换后:x ,y endl;system(PAUSE);/调用库函数调用库函数system(),输出系统提醒信息,输出系统提醒信息return 0;/返回值返回值,返回操作系统返回操作系统第8页*5编一个程序,用同一个函数名对编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型能个数据进行从小到大排序,数据类型能够是整型、单精度实型、双精度实型,用重载函数实现。够是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:#include /编译预处理命令编译预处理命令using namespace std;/使用命名空间使用命名空间std void

11、 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=aj;aj=tem;第9页*5编一个程序,用同一个函数名对编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型能个数据进行从小到大排序,数据类型能够是整型、单精度实型、双精度实型,用重载函数实现。够是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:void Sort(float a,int n)/对对a0.an-1进行排序进行排序float tem;/

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

13、i=0;i n-1;i+)for(j=i+1;j aj)/ai比比aj更大更大tem=ai;ai=aj;aj=tem;第11页*5编一个程序,用同一个函数名对编一个程序,用同一个函数名对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

14、,2.6,5.8,6.8,9.8,0.8,6.2;/定义定义cint i,n=8;/定义变量定义变量Sort(a,n);/对对a排序排序cout a:;/输出提醒输出提醒for(i=0;i n;i+)cout ai ;/输出输出aicout endl;/换行换行第12页*5编一个程序,用同一个函数名对编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型能个数据进行从小到大排序,数据类型能够是整型、单精度实型、双精度实型,用重载函数实现。够是整型、单精度实型、双精度实型,用重载函数实现。参考程序参考程序:Sort(b,n);/对对b排序排序cout b:;/输出提醒输出提醒for(i=

15、0;i n;i+)cout bi ;/输出输出bicout endl;/换行换行Sort(c,n);/对对c排序排序cout c:;/输出提醒输出提醒for(i=0;i n;i+)cout ci ;/输出输出cicout endl;/换行换行system(PAUSE);/调用库函数调用库函数system(),输出系统提醒信息,输出系统提醒信息return 0;/返回值返回值,返回操作系统返回操作系统第13页C+C+面向对象程序设计教程面向对象程序设计教程第第2 2章章 类和对象类和对象习题解答习题解答 第14页一、选择题一、选择题1以下选项中,不属于面向对象程序设计特征是以下选项中,不属于面向

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

17、承自一个事物时,同一操作在它们之间表现出不一样行为。答案:答案:C第15页2在面向对象方法中,实现信息隐蔽是依靠在面向对象方法中,实现信息隐蔽是依靠 。A)对象继承)对象继承B)对象多态)对象多态C)对象封装)对象封装D)对象分类)对象分类解析:解析:在面向对象方法中,封装性是指将数据和算法捆绑成一个在面向对象方法中,封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象数据被封装在内部,只能够整体,这个整体就是对象,描述对象数据被封装在内部,只能够经过对象提供算法来进行操作,从而实现信息隐蔽。经过对象提供算法来进行操作,从而实现信息隐蔽。答案:答案:C第16页3以下关于类和对象叙述

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

19、。却只能是一个数据类型。答案:答案:A第17页4有以下类申明:有以下类申明:class MyClass int num;则则MyClass类组员类组员num是是 。A)公有数据组员)公有数据组员B)公有组员函数)公有组员函数C)私有数据组员)私有数据组员D)私有组员函数)私有组员函数解析:解析:函数申明时,函数名后必须带函数申明时,函数名后必须带“”,所以,所以num是数据是数据组员。在类中,当没有用访问权限标识符标识时,默认为私有权组员。在类中,当没有用访问权限标识符标识时,默认为私有权限。限。答案:答案:C第18页5在以下函数原型中,能够作为类在以下函数原型中,能够作为类AA结构函数是结构

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

21、有this指针指针D)类非静态组员函数才有)类非静态组员函数才有this指针指针解析:解析:this指针只能在类组员函数中使用,它指向该组员函数被调指针只能在类组员函数中使用,它指向该组员函数被调用对象。不过有两种与类相关函数都没有用对象。不过有两种与类相关函数都没有this指针,即静态组员函指针,即静态组员函数和友元函数。数和友元函数。答案:答案:D第20页7有以下程序:有以下程序:class Testprivate:static int n;/静态组员静态组员public:Test()n+=2;/结构函数结构函数Test()n-=3;/析构函数析构函数static int GetNum()

22、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,执行,执行“Test*p=new Test”将调用结构将调用结构函数,执行函数,执行“n+=2;”,n值变为值

23、变为3,执行,执行“delete p;”时将调用析构函数,时将调用析构函数,执行执行“n-=3;”,n值减值减3,变为,变为0。答案:答案:A第21页8有以下程序:有以下程序:class MyClassprivate:int n;/数据组员数据组员public:MyClass(int k):n(k)/结构函数结构函数int Get()return n;/返回返回nint Get()const return n+1;/返回返回n+1;int main()/主函数主函数main()MyClass a(5);/定义对象定义对象aconst MyClass b(6);/定义对象定义对象bcout a.

24、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()const return n+1;”,故得到,故得到6+1=7。答案:答案:B第22页9因为常对象不能被更新,所以因为常对象不能被更新,所以 。A)经过常对象只能调用它常组员函

25、数)经过常对象只能调用它常组员函数B)经过常对象只能调用静态组员函数)经过常对象只能调用静态组员函数C)常对象组员都是常组员)常对象组员都是常组员D)经过常对象能够调用任何不改变对象值组员函数)经过常对象能够调用任何不改变对象值组员函数解析:解析:经过常对象只能调用类中常组员函数,而不能调用类中其它组员函数。经过常对象只能调用类中常组员函数,而不能调用类中其它组员函数。答案:答案:A第23页10以下情况中,不会调用复制结构函数是以下情况中,不会调用复制结构函数是 。A)用一个对象去初始化同一类另一个新对象时)用一个对象去初始化同一类另一个新对象时B)将类一个对象赋予该类另一个对象时)将类一个对

26、象赋予该类另一个对象时C)函数形参是类对象,调用函数进行形参和实参结合时)函数形参是类对象,调用函数进行形参和实参结合时D)函数返回值是类对象引用,函数执行返回调用时)函数返回值是类对象引用,函数执行返回调用时解析:解析:只要在程序执行中,需要用一个对象来初始化另一个对象,都要调用只要在程序执行中,需要用一个对象来初始化另一个对象,都要调用复制结构函数,包含复制结构函数,包含A、B、C三种情况。三种情况。答案:答案:D第24页11以下关键字不能用来申明类访问权限是以下关键字不能用来申明类访问权限是 。A)public B)static C)protected D)private解析:解析:类访

27、问权限有三种:公有、私有、保护,关键字分别是类访问权限有三种:公有、私有、保护,关键字分别是public,private,protected,。static用于静态组员申明。用于静态组员申明。答案:答案:B第25页12有以下程序:有以下程序:class MyClasspublic:MyClass()cout A;/无参结构函数无参结构函数MyClass(char c)cout c;/带参结构函数带参结构函数MyClass()cout B;/析构函数析构函数;int main()/主函数主函数main()MyClass a,*p;/定义变量定义变量p=new MyClass(X);/分配动态空间

28、分配动态空间delete p;/释放动态空间释放动态空间cout endl;/换行换行 return 0;/返回值返回值0,返回操作系统返回操作系统执行这个程序,屏幕上将显示输出执行这个程序,屏幕上将显示输出 。A)ABX B)ABXB C)ABXB D)AXBB解析:解析:定义对象定义对象a时,调用一次结构函数时,调用一次结构函数“MyClass()cout A;”,但,但定义对象指针定义对象指针p时不调用结构函数;使用时不调用结构函数;使用new动态创建对象时,依据参数情况动态创建对象时,依据参数情况调用调用“MyClass(char c)cout c;”,输出,输出X;执行;执行“del

29、ete p;”时,需时,需要调用一次析构函数,输出要调用一次析构函数,输出B;最终主函数结束时,对象最终主函数结束时,对象a调用一次析构函数,调用一次析构函数,输出输出B。答案:答案:D第26页13有以下程序:有以下程序:class Testpublic:static int a;/静态组员静态组员void Init()a=1;/初始化函数初始化函数Test(int a=6)Init();a+;/结构函数结构函数;int Test:a=0;/初始化初始化aTest obj;/定义全局对象定义全局对象int main()/主函数主函数main()cout obj.a endl;/输出输出aret

30、urn 0;/返回值返回值0,返回操作系统返回操作系统运行时输出结果是运行时输出结果是 。A)0 B)1 C)2 D)3解析:解析:首先初始化静态数据组员首先初始化静态数据组员a为为0,然后在定义全局对象,然后在定义全局对象obj时调用结构函时调用结构函数。这时有两个数。这时有两个a,一个是,一个是“Test(int a=6)Init();a+;”函数中局部变量函数中局部变量a,另一个是静态数据组员,另一个是静态数据组员a,需要靠作用域来区分。在执行,需要靠作用域来区分。在执行Init()时,因为离开时,因为离开了结构函数了结构函数“Test(int a=6)Init();a+;”作用域,作用

31、域,Init()里里a为静态数据组为静态数据组员,这时静态数据组员员,这时静态数据组员a赋值为赋值为1;之后回到结构函数执行;之后回到结构函数执行a+,这个,这个a为为“Test(int a=6)Init();a+;”中中a,值变为,值变为7,但当结构函数执行完成后,但当结构函数执行完成后,该局部变量该局部变量a随之消失,与对象无关。随之消失,与对象无关。obj.a调用是静态数据组员,结果为调用是静态数据组员,结果为1。答案:答案:B第27页14有以下程序:有以下程序:class Testprivate:long x;/私有数据组员私有数据组员public:Test(long a):x(a)/

32、结构函数结构函数friend long Fun(Test s);/友元友元;long Fun(Test s)if(s.x=1)return 1;/递归结束递归结束else return s.x*Fun(Test(s.x-1);/递归调用递归调用int main()/主函数主函数main()int sum=0;/定义变量定义变量for(int i=0;i 6;i+)sum+=Fun(Test(i);/累加求和累加求和cout sum endl;/输出输出sum return 0;/返回值返回值0,返回操作系统返回操作系统运行后输出结果是运行后输出结果是 。A)120 B)16 C)154 D)3

33、4解析:解析:友元函数友元函数Fun()参数表中对象在初始化时需执行结构函数参数表中对象在初始化时需执行结构函数“Test:Test(long a)”,调用过程为:先调用结构函数,调用过程为:先调用结构函数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

34、+1+2+6+24+120=154。答案:答案:C第28页15有以下程序:有以下程序:class Testprivate:int a;/数据组员数据组员public:Test()cout 无参结构函数无参结构函数 endl;/无参结构函数无参结构函数Test(int a)cout a endl;/带参结构函数带参结构函数Test(const Test©):a(copy.a)/复制结构函数复制结构函数 cout 复制结构函数复制结构函数 endl;Test()cout 析构函数析构函数 endl;/析构函数析构函数;int main()/主函数主函数main()Test a(3);/定义

35、对象定义对象 return 0;/返回值返回值0,返回操作系统返回操作系统运行时输出结果是运行时输出结果是 。A)3 B)无参结构函数)无参结构函数C)复制结构函数)复制结构函数D)3 析构函数析构函数 析构函数析构函数 析构函数析构函数解析:解析:创建对象创建对象a时带有参数时带有参数3,故调用结构函数,故调用结构函数Test(int a),输出,输出3并换行;程并换行;程序结束时调用析构函数序结束时调用析构函数Test(),输出,输出“析构函数析构函数”并换行。并换行。答案:答案:D 第29页16有以下程序:有以下程序:class MyClassprivate:int n;/数据组员数据组

36、员public:MyClass(int m):n(m)/结构函数结构函数void Print()const cout const:n=n ;/常组员函数常组员函数void Print()cout n=n ;/非常组员函数非常组员函数;int main()/主函数主函数main()const MyClass obj1(10);/常对象常对象MyClass obj2(20);/非常对象非常对象obj1.Print();/输出信息输出信息obj2.Print();/输出信息输出信息cout endl;/换行换行 return 0;/返回值返回值0,返回操作系统返回操作系统程序输出结果是程序输出结果是

37、 。A)n=10 const:n=20B)const:n=10 const:n=20C)const:n=10 n=20D)n=10 n=20解析:解析:依据依据const修饰符选择对应结构函数,修饰符选择对应结构函数,objl为常对象,调用常组员函数,为常对象,调用常组员函数,输出输出“const:n=10”,obj2为普通对象,调用优先调用非常组员函数,输出为普通对象,调用优先调用非常组员函数,输出“n=20”。答案:答案:C第30页二、填空题二、填空题 1在面向对象方法中,在面向对象方法中,描述是含有相同属性与操作描述是含有相同属性与操作一组对象。一组对象。解析:解析:在面向对象设计中,一

38、个对象是由一些属性和操作组成。在面向对象设计中,一个对象是由一些属性和操作组成。对象属性描述了对象内部细节。类是含有相同属性和操作一组对对象属性描述了对象内部细节。类是含有相同属性和操作一组对象集合,它为属于该类全部对象提供统一抽象描述。象集合,它为属于该类全部对象提供统一抽象描述。答案:答案:类类 第31页2非组员函数应申明为类非组员函数应申明为类 函数才能访问这个类函数才能访问这个类private组员。组员。解析:解析:类含有数据封装和隐藏特征,通常只有类组员函数才能访类含有数据封装和隐藏特征,通常只有类组员函数才能访问类私有组员,外部函数只能访问类公有组员。但在一些情况下,问类私有组员,

39、外部函数只能访问类公有组员。但在一些情况下,需要在类外部访问类私有组员,这时必须依靠引入友元来实现。需要在类外部访问类私有组员,这时必须依靠引入友元来实现。答案:答案:友元友元 第32页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;/

40、返回返回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,返回操作系统返回操作系统。解析:解析:由第一次调用由第

41、一次调用GetCount()函数输出函数输出count值为值为0可知,应将其初始化为可知,应将其初始化为0,再,再依据静态数据组员初始化格式:依据静态数据组员初始化格式:类型类型 类名类名:静态组员名字静态组员名字=值值;可得横线处填写语句。可得横线处填写语句。答案:答案:int Point:count=0;第33页4有以下类申明:有以下类申明:class MyClassint i;private:int j;protected:int k;public:int m,n;其中私有组员数量是其中私有组员数量是 。解析:解析:在用在用class申明类组员申明中,假如没有标识组员访问权限,则默认申明

42、类组员申明中,假如没有标识组员访问权限,则默认为私有访问权限,故为私有访问权限,故i为私有访问权限。为私有访问权限。答案:答案:2 第34页5有以下程序:有以下程序:class Integerprivate:int n;/数据组员数据组员public:Integer(int n=0)=n;/结构函数结构函数void Show()const cout n n 或或 Integer:n 第35页6有以下程序:有以下程序:class Apublic:A()cout A;/结构函数结构函数A()cout A;/析构函数析构函数;int main()/主函数主函数main()A*p=new A;/定义指

43、针定义指针delete p;/释放动态空间释放动态空间cout endl;/换行换行system(PAUSE);/调用库函数调用库函数system(),输出系统提醒,输出系统提醒return 0;/返回值返回值0,返回操作系统返回操作系统程序输出结果是程序输出结果是 。解析:解析:创建动态对象时需调用创建动态对象时需调用A结构函数,输出结构函数,输出“A”;释放动态对象时,调;释放动态对象时,调用用A析构函数,输出析构函数,输出“A”。答案:答案:AA 第36页三、编程题三、编程题1定义一个满足以下要求定义一个满足以下要求Date类。类。(1)用下面格式输出日期:)用下面格式输出日期:年年-月

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

45、期对象,设置日期,输出该对象提供日期。并编出应用程序,定义日期对象,设置日期,输出该对象提供日期。参考程序参考程序:public:/公有函数公有函数Date(int y=,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 Show()const/显示日期显示日期 cout year -month -day endl;int main()/主函数主函数main()Date d;/定义对象定义对象d.Show();/显示日期显

46、示日期d.Set(,6,18);/设置日期设置日期d.Show();/显示日期显示日期system(PAUSE);/调用库函数调用库函数system(),输出提醒信息,输出提醒信息return 0;/返回值返回值,返回操作系统返回操作系统第38页2定义一个时间类定义一个时间类Time,能提供和设置由时、分、秒组成时间,并编出应,能提供和设置由时、分、秒组成时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供时间。用程序,定义时间对象,设置时间,输出该对象提供时间。参考程序参考程序:#include /编译预处理命令编译预处理命令using namespace std;/使用命名空间使用

47、命名空间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)void Set(int h,int m,int s)/设置日期设置日期 hour=h;minute=m;second=s;void Show()const/显示日期显示日期 cout hour :minute :second endl;int main()/主函数主函数main()T

48、ime t;/定义对象定义对象t.Show();/显示时间显示时间t.Set(8,6,18);/设置时间设置时间t.Show();/显示时间显示时间system(PAUSE);/调用库函数调用库函数system(),输出提醒信息,输出提醒信息return 0;/返回值返回值,返回操作系统返回操作系统第39页*3编写设计一个编写设计一个People(人)类。该类数据组员有姓名(人)类。该类数据组员有姓名(name)、年纪、年纪(age)、身高身高(height)、体重、体重(weight)和人数和人数(num),其中人数为静态数据组员,组员函,其中人数为静态数据组员,组员函数有结构函数数有结构函

49、数(People)、进食、进食(Eatting)、运动、运动(Sporting)、显示、显示(Show)和显示和显示人数人数(ShowNum)。其中结构函数由已知参数姓名。其中结构函数由已知参数姓名(nm)、年纪、年纪(a)、身高、身高(h)和体重和体重(w)结构对象,进食函数使体重加结构对象,进食函数使体重加1,运动函数使身高加,运动函数使身高加1,显示函数用于显示,显示函数用于显示人姓名、年纪、身高、体重,显示人数函数为静态组员函数,用于显示人数。人姓名、年纪、身高、体重,显示人数函数为静态组员函数,用于显示人数。假设年纪单位为岁,身高单位为厘米,体重单位为市斤,要求全部数据组员为假设年纪

50、单位为岁,身高单位为厘米,体重单位为市斤,要求全部数据组员为private访问权限,全部组员函数为访问权限,全部组员函数为public访问权限,在主函数中定义若干个对访问权限,在主函数中定义若干个对象,经过对象直接访问类全部非静态组员函数,经过类访问静态组员函数。象,经过对象直接访问类全部非静态组员函数,经过类访问静态组员函数。参考程序参考程序:#include /编译预处理命令编译预处理命令using namespace std;/使用命名空间使用命名空间std class Peopleprivate:/数据组员数据组员char name9;/姓名姓名int age;/年纪年纪int hei

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服