C++习题3(继承和多态)

合集下载

面向对象的程序设计语言――C++(第二版)-习题参考答案

面向对象的程序设计语言――C++(第二版)-习题参考答案

面向对象的程序设计语言――C++(第二版)-习题参考答案课后习题答案以及代码习题参考答案第1章1.填空题C++语言概述(1)函数说明,函数体(2)声明区,主程序区,函数定义区(3)多态性(4)namespace,using(5)std(6)cin,(7)//(8)对数据的操作2.判断题(1)对(2)错(3)错(4)错(5)错3.改错题(1)没有函数体,应改为void main() {};(2)语句没有分号,应改为using namespace myspace;(3)cout和操作符共同完成输出的功能,应改为cout“ Input your name:";(4)应改为#include iostream.h4.简答题5.编程题(略)(略)第2章1.选择题基本数据类型、运算符与表达式(1)B (2)D (3)B (4)D (5)B课后习题答案以及代码2.简答题(1)(a)、(c)(e)、(f)、(g)、(h)、(i)(2)(a)、(g)、(i)、(j)(3)(a)5.5(b)0(c)20(d)0,0(e)1(f)1,2(g)3(h)-40(i)2(j)3(k)s1='0's1='9'(l)N!=03.读程序写结果(1)0,15(2)(1、1、1),(-1、-1、-1)(3)(a)a*a+2*a*b+b*b(b)4.0/3.0*3.__-__R*R*R(c)5.0/9.0*(F-32)(d)b=ab=c(4)364143(5)x=14.编程题(略)第3章1.选择题(1)B (2)A (3)A (4)C2.判断题(1)错(2)对(3)对(4)错3.读程序写结果(1)C++的控制语句5)A 5)错((课后习题答案以及代码12 23 3 34 4 4 45 5 5 5 5(2)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 1(3)j的值为0;i的值为2;4.编程题(略)第4章1.填空题函数(1)void(2)静态全局变量,static(3)函数重载(4)inline(5)递归函数(6)宏定义命令,文件包含命令,条件编译命令2.判断题(1)错(2)错(3)错(4)错(5)错(6)对(7)错(8)错(9)对(10)对3.读程序写结果(1)x=7,y=4x=9,y=5(2)34.56101(3)162228(4)12 15 18 21 24课后习题答案以及代码(5)2,1,4,1,3,2,1,4.简答题5.编程题(略)(略)第5章1.选择题构造数据类型(1)C (2)D (3)A (4)B (5)C 2.判断题(1)错(2)对(3)对(4)错(5)错3.读程序写结果(1)153(2)422 5 6 8 10(3)__,21(4)419(5)6904(6)43214.编程题(略)第6章1.填空题(1)类,对象,类(2)数据成员,成员函数(3)不能(4)private,protected,public,private (5)成员函数类和对象课后习题答案以及代码(6)friend(7)类名,作用域运算符(8)对象名.成员名,指针变量名-成员名,(*指针变量名).成员名(9)构造,析构,构造,析构(10)常量数据,引用数据(11)全局,数据类型,所属的类(12)常成员,只读(13)成员,友元(14)类数据成员,类成员函数(15)this(16)浅拷贝2.选择题(1)C (2)C (3)B (4)C (5)B(6)C (7)D (8)B (9)C (10)D(11)A (12)C (13)D (14)D (15)B3.改错题(1)man1.salary=1000.00; 不能在类外访问类的私有成员(2)float r=0;和float c=0; 类本身是抽象的,不能在类的定义体中给其数据成员赋值}后缺少分号“;”(3)成员函数void setdata(float x1,float y1,float r);没有实现(4)构造函数名point()应与类名同名,为Point没有头文件包含#include iostream.h4.读程序写结果题(1)x=0,y=0x=100,y=200(2)x=100,y=200x=1000,y=2022年t=3.14(3)Sta::fun2()=10s.fun2()=11r.a=20(4)Constructor1 called!x=0Constructor2 called!x=100Destructor called!Destructor called!(5)课后习题答案以及代码575.简答题6.编程题(略)(略)第7章1.填空题(1)继承(2)基类,派生类(3)private,protected,public,private (4)不可访问,保护,公有(5)私有(6)单(一),多(重)(7)赋值兼容规则(8)静态,动态(9)抽象类2.选择题继承和派生(1)B (2)A (3)B (4)C (5)B (6)A (7)D (8)B (9)B (10)B(11)D (12)B3.改错题(1)本题的错误主要是数据成员的访问权限问题:基类的私有成员在派生类中不可访问,如fb()函数中的a3=30;语句;类的私有和保护成员在类外不能访问,如main函数中的x.a2 =20;.a3=30; ,y.a2=200; ,y.a3=300; ,y.b2=2022年;和y.b3=3000;语句。

C++练习题(含答案)

C++练习题(含答案)

C++练习题一、掌握递归调用:任何有意义的递归调用总是由两部分组成的,即递归公式与递归结束条件。

递归函数设计的一般形式是:函数类型递归函数名f (参数x ){if(满足结束条件)结果=初值;else结果=含f(x-1)的表达式;返回结果;}例题:书P81例4-12,例4-13,二、掌握冒泡排序法算法:如果一个数组b,有n个数,则要进行n-1趟比较,在第一趟中要进行n-1次两两比较,在第j趟中要进行n-j次两两比较,冒泡排序的算法如下边:void bubble ( int b[ ], int n){for ( int i=0; i<n-1;n++ );for ( int j=0;j<n-1-i ; j++);if ( b[j]<b[i] ){int t=b[j];b[j]=b[j+1];b[j+1]=t;}}例题:书P143例7-3三、掌握二维数组的应用例题:书P146例7-4,例7-6四、练习1.C++中两个逻辑常量是什么?(true,false)C++语言和C语言的不同点(C++为面向对象程序设计,C为面向过程程序设计或称结构化程序设计)。

2.C++语言的具有抽象、封装、继承、多态的特点,理解每个特点的意思(课本P3-P4)3.表达式中不同类型的数据进行混合运算时,不同类型数据的转换顺序。

比如10+a+x*y,其中a为float型,x为int型,y为double型,那么整个表达式的值是什么类型?(double型)4.复合的赋值运算符(a+=b、x*=y+8、%=)的用法a+=b 相当于a=a+bx*=y+8 相当于x=x*(y+8)a%=b 相当于a=a%b5.在类中声明一个友元函数的格式?比如viod fun()函数是类A的友元函数。

友元函数的限定词:friend例: friend viod fun()6.熟悉三目运算符(?:)(课本P47)、自增(++)自减(--)的用法格式:关系表达式?表达式1:表达式2功能:当关系表达式的值为真,结果为表达式1的值,关系表达式的值为假,结果为表达式2的值例:若有定义”int x=4,y=5;”,则表达式”y>x++?x--:y++”的值为( C )A) 3 B) 4 C) 5D) 6《习题与指导》P5 第27-32题,自增自减: 《习题与指导》P4第17题7.三个循环语言(for、while、do…while)的用法,给定条件后,会判断循环次数。

面向对象程序设计 郑州大学网考资料及答案

面向对象程序设计 郑州大学网考资料及答案

面向对象程序设计郑州大学网考资料及答案一、考试资料面向对象程序设计是计算机科学中的一种重要方法,它以对象为基础,将数据和操作封装在对象中,通过对象之间的关系和交互来实现程序的功能。

以下是一些关于面向对象程序设计的考试资料:1、对象的概念和分类:对象是面向对象程序设计的核心概念,可以分为类对象和实例对象。

类对象是类的实例,实例对象是类的具体表现。

2、封装性:面向对象程序设计中的封装性是指将数据和操作封装在对象中,通过访问控制机制来限制外部对内部数据的访问。

3、继承性:继承性是指子类可以继承父类的属性和方法,同时还可以添加自己特有的属性和方法,实现代码的重用和扩展。

4、多态性:多态性是指同一消息可以被不同的对象接收并执行不同的操作,使得程序具有更好的灵活性和可扩展性。

5、抽象性:抽象性是指通过抽象类和接口来定义对象的通用属性和方法,具体的实现细节由子类来完成,从而实现对象的抽象和分离。

6、常用面向对象编程语言:Java、C++、Python等语言都是支持面向对象编程的常用语言,其语法和特性各不相同,但都遵循面向对象的基本思想。

7、常用设计模式:设计模式是解决常见问题的经验总结,包括单例模式、工厂模式、观察者模式等,可以帮助开发者更好地设计和实现程序。

二、考试答案以下是一些关于面向对象程序设计的考试答案:1、什么是对象?答:对象是现实世界中事物的抽象,是属性及其方法的集合。

2、什么是封装性?答:封装性是指将数据和操作封装在对象中,通过访问控制机制来限制外部对内部数据的访问。

它有助于保护对象内部数据不被外部随意修改,同时提供了安全性和稳定性。

3、什么是继承性?答:继承性是指子类可以继承父类的属性和方法,同时还可以添加自己特有的属性和方法,实现代码的重用和扩展。

它有助于减少代码冗余,提高代码的可维护性和可扩展性。

4、什么是多态性?答:多态性是指同一消息可以被不同的对象接收并执行不同的操作,使得程序具有更好的灵活性和可扩展性。

C++习题3(继承和多态)

C++习题3(继承和多态)

C++习题3(继承和多态)C++习题3(继承和多态)一、选择题1、在C++中,类与类之间的继承关系具有( C )A)自反性 B)对称性 C)传递性 D)反对称性2、在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( B )A)受限制 B)保持不变 C)受保护 D)不受保护3、按解释中的要求在下列程序划线处填入的正确语句是:( C )#include class Base{public:void fun(){cout<<"Base::fun"<<=""> fun()cout<<"Derived::fun"<fun();4、在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( C )A)受限制 B)保持不变 C)受保护 D)不受保护5、在哪种派生方式中,派生类可以访问基类中的protected 成员(B )A)public和private B)public、protected和private C)protected和private D)仅protected6、当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C)A)public成员 B)private成员 C)protected成员 D)友元7、不论派生类以何种方法继承基类,都不能使用基类的(B )A)public成员 B)private成员 C)protected成员 D)public成员和protected成员8下面叙述错误的是(S )。

A )基类的protected成员在派生类中仍然是protected的 B)基类的protected成员在public派生类中仍然是protected的C)基类的protected成员在private派生类中是private的 D)基类的protected 成员不能被派生类的对象访问9、下列说法中错误的是(S )。

《C#程序设计》习题集.

《C#程序设计》习题集.

《C#程序设计》习题集班级:__________________学号:__________________姓名:__________________2013年3月第1章.NET平台与Visual Studio 2008开发工具一、选择:1. 下列语句在控制台上的输出是什么?( b )static void Main(string[] args){if (true)System.Console.WriteLine("FirstMessage");System.Console.WriteLine("SecondMessage");}a) 无输出 b)FirstMessage c)SecondMessage d)FirstMessageSecondMessage2. C#中导入某一命名空间的关键字是( B )。

a) use b) using c)include d) import3. C#源程序文件的拓展名是(D)A、vbB、cC、cppD、cs4.以下程序的输出结果是(D)string str="b856ef10";string result="";for(int i=0;str[i]>='a' && str[i]<='z';i+=3){result =str[i]+result;Console.WriteLine(result);}A、10fe658bB、febC、10658D、b5. Visual 开发平台是(B)公司提供的.NET应用程序集成开发工具。

A)Borland B)Microsoft C)Intel D)IBM 6.在Visual 窗口,(B )窗口显示了当前Visual Studio解决方案的树型结构。

A.类视图 B. 解决方案资源管理器 C. 资源视图 D. 属性7.在C#中,引用命名空间System的正确语句是( A )ing System;B.# import <System>;es System;D.# include <System>;二、填空:1.在C#程序中,程序的执行总是从(Main )方法开始的2.可使用Console类的(ReadLine )方法,在控制台程序运行时输入信息。

C++课后习题及其答案

C++课后习题及其答案

练习题11.1 判断题×1.C++语言和C语言都是面向对象的程序设计语言。

√2.面向对象方法具有封装性、继承性和多态性。

√3.C语言是C++语言的一个子集。

C++语言继承了C语言。

×4.C++语言程序与C语言程序一样都是函数串。

×5.C++语言支持封装性和继承性,不支持多态性。

√6.C++语言比C语言对数据类型要求更加严格了。

√7.C++语言对C语言进行了一次改进,使得编程更加方便了。

×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。

√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。

√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。

1.2 单选题1.下列关于面向对象概念的描述中,错误的是(C )。

A.面向对象方法比面向过程方法更加先进B.面向对象方法中使用了一些面向过程方法中没有的概念C.面向对象方法替代了结构化程序设计方法D.面向对象程序设计方法要使用面向对象的程序设计语言2.下列各种高级语言中,不是面向对象的程序设计语言是(D )。

A.C++ B.JavaC.VB D.C3.下列关于类的描述中,错误的是( A )。

A.类就是C语言中的结构类型B.类是创建对象的模板C.类是抽象数据类型的实现D.类是具有共同行为的若干对象的统一描述体4.下列关于对象的描述中,错误的是(C )。

A.对象是类的一个实例B.对象是属性和行为的封装体C.对象就是C语言中的结构变量D.对象是现实世界中客观存在的某种实体5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C )。

A.提取符是对右移运算符(>>)重载得到的B.插入符是对左移运算符(<<)重载得到的C.提取符和插入符都是双目运算符,它们要求有两个操作数D.提取符和插入符在输入/输出语句中不可以连用1.3 填空题1.C++语言具有面向对象方法中要求的三大特性:封装性、继承性和多态性。

C++继承与派生类习题

C++继承与派生类习题

第九章继承与派生类9.2 典型例题分析与解答例题1:下列对派生类的描述中,(?????)是错误的。

A.??一个派生类可以作为另一个派生类的基类B.??派生类至少有一个基类C.??派生类的成员除了它自己的成员外,还包含了它的基类成员D.?派生类中继承的基类成员的访问权限到派生类保持不变答案:D分析:一个派生类可以作为另一个派生类的基类。

无论是单继承还是多继承,派生类至少有一个基类。

派生类的成员除了它自己的成员外,还包含了它的基类成员。

派生类中继承的基类成员的访问权限到派生类受继承方式影响的,对于私有继承,基类的public,protected成员在派生类中作为private成员;对于公有继承,基类的public,protected成员在派生类中访问属性不变;对于保护继承,基类的public、protected成员在派生类中作为protected成员。

例题2:派生类的对象对它的哪一类基类成员是可以访问的(?????)???A.公有继承的基类的公有成员???????????????B. 公有继承的基类的保护成员???C. 公有继承的基类的私有成员???????????????D. 保护继承的基类的公有成员答案:A分析:公有继承的基类的公有成员在派生类中保持公有访问权限,所以派生类对象可以访问它;公有继承的基类的保护成员在派生类中保持保护访问权限,所以派生类对象不可以访问它;基类的私有成员不能被派生到派生类中,所以派生类对象不可以访问它;保护继承的基类的公有成员在派生类中变成保护的访问权限,所以派生类对象不可以访问它。

例题3:关于多继承二义性的描述,(?????)是错误的。

A.?派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B.??一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C.??解决二义性最常用的方法是作用域运算符对成员进行限定D.??派生类和它的基类中出现同名函数时,将可能出现二义性答案:D分析:出现二义性有两种情况:调用不同基类的相同成员时可能出现二义性;访问共同基类的成员时可能出现二义性。

C++程序设计练习题

C++程序设计练习题

C++程序设计练习题C++程序设计实验(下)练习题⼀、类与对象1.定义⼀个名为Rectangle的矩形类:(1)数据成员为矩形的长Len和宽Wid;(2)定义有参构造函数;(3)两个成员函数Area()和Length(),分别计算并输出矩形的⾯积和周长。

(4)定义主函数,创建⼀个Rectangle类对象:长为5,宽为2。

通过调⽤成员函数输出该矩形的⾯积和周长。

2.⽇期类。

定义⼀个⽇期类Cdate属性:⼀个包括年(year)、⽉(month)和⽇(day)三个整型私有数据成员。

⽅法:定义成员函数Setdate()设置⽇期、成员函数Isleapyear()判断是否为闰年、成员函数Print()输出⽇期。

定义主函数,对上述成员函数进⾏测试。

void main(){Cdate d1; //定义对象d1.Setdate(1999,12,30); //通过对象访问成员if (d1. Isleapyear())cout<<“闰年”;elsecout<<“⾮闰年!”;d1.Print();}3.员⼯问题1.定义⼀个⽇期类Date(1)私有数据成员包括:年(int year)、⽉(int month)、⽇(int day);(2)定义构造函数:Date(int _year, int _month, int _day),对数据成员进⾏初始化;(3)定义成员函数void print() const,打印⽇期信息(打印格式:年/⽉/⽇)。

2.定义⼀个员⼯类Employee(1)私有数据成员包括:姓名(char *name)、出⽣⽇期(Date birth)、⽉⼯资(double salary);(2)定义构造函数:Employee(char *_name, int year, int month, int day, double _salary),对数据成员进⾏初始化;(3)定义析构函数:~Employee(),释放堆空间;(4)定义成员函数double computSalary(double bonus) const,计算员⼯年薪(计算公式:12×⽉⼯资+年终奖),其中参数bonus为年终奖;(5)定义成员函数void print() const,打印员⼯信息,打印格式如下图所⽰。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C)class B: public A virtualD)virtual class B: public A
13..实现运行时的多态性采用(D)
A)重载函数B)构造函数C)析构函数D)虚函数
14.若一个类中含有纯虚函数,则该类称为(D)
A)基类B)纯基类C)派生类
D)抽象类
15.假设A为抽象类,下列声明(B)是正确的
C)protected和privateD)仅protected
6.当一个派生类仅有protected继承一个基类时,基类中的所 有公有成员成为派生类的(C)
A) public成员B) private成员C) protected成员
D)友元
7.不论派生类以何种方法继承基类,都不能使用基类的(B)
A) public成员B) private成员C) protected成员
6.指向基类的对象的指针变量也可以指向—公有派生类的对象。
二、程序题
1.继承的工作方式,完成以下代码。要求: (1)处继承方 式为共有继承public, (2)处填写基类的ai,(3)处填写 派生类的bi, (4)对象b的数据成员有哪些?ai,bi
#i nclude<iostream.h>
#i ncludevstri ng.h>
D) public成员禾口protected成员
8下面叙述错误的是(S)。
A)基类的protected成员在派生类中仍然是protected的
B)基类的protected成员在public派生类中仍然是pr生类中是private的
d)基类的protected成员不能被派生类的对象访问
D)Base->fu n();
4.在保护继承的情况下,基类的成员(私有的除外)在派生 类中的访问权限(C)
A)受限制B)保持不变C)受保护D)不受保护
5•在哪种派生方式中,派生类可以访问基类中的protected
成员(B:
A)public禾口privateB)public、protected禾口private
}
2. 派生类的构造。派生类的构造总是由基类的初始化开始 的。填写代码,完成基类的初始化。并且要求屏幕输出 效果是:
#i nclude<iostream.h>
class A{
public:
A(int i){x=i; cout<<"CA:"<<x<<endl;}
〜A(){cout<v"DA"vve ndl;} private:
A) A fun(int);B) A *p;C) int fun(A);
D) A Obj;
16.在派生类中,重载一个虚函数时,要求函数名、参数的 个数、参数的类型、参数的顺序和函数的返回值(B)
A)不同B)相同C)相容
D)部分相同
17.下面函数原型声明中,(C)声明了fun为普通虚函数
A) void fun()=0;B) virtual void fun( )=0;
class Base{
public:
void fun(){cout<v"Base::fun"v<endl;}
};
class Derived:public Base{
public:
void fun ()
{〃在此空格处调用基类的函
数fun()
cout<<"Derived::fun"<<endl;}
};
A)fun();B)Base.fun();C)Base::fun();
A)虚函数是一个静态成员函数
B)虚函数是一个非成员函数
£)虚函数既可以在函数说明时定义,也可以在函数实现时 定乂
D)派生类的虚函数与基类中对应的虚函数具有相同的参 数个数和类型
二、填空题:
1■派生类对基类的继承有三种方式:_public_、
_protected_和__private_。
2■如果类Alpha继承了类Beta,则类Alpha称为__派生
C) virtual void fun ();D) virtual void fun(){};
18.在下面四个选项中,(A)是用来声明虚函数的。
A)virtual B)public C)usi ng D)false
19.实现运行时的多态性要使用(D)。
A)重载函数B)构造函数
C)析构函数D)虚函数
20.关于虚函数的描述中,正确的是(D)。
—类,类Beta称为—基一—类。
3.设置虚基类的目的是 为了消除二义性,可通过_virtual
标识虚基类。
4.类继承中,缺省的继承方式是—private。
5.当用protected继承从基类派生 宀个类时,基类的public
成员成为派生类的protected员,protected成
员成为派生类的protected成员。
class A{
public:
A(){ai=1;}
protected:
int ai;
};
class B:A{
public:
B(){bi=2;}
voiddisplay(){cout<<(2)<<
(3)<<e ndl;}
private:
int bi;
};
int mai n()
{
B b;
b.display();
9.下列说法中错误的是(S)。
A)保护继承时基类中的public成员在派生类中仍是public的
C)私有继承时基类中的public成员在派生类中是private的
D)保护继承时基类中的public成员在派生类中是protected的
10下面叙述错误的是(C)。
A)派生类可以使用private派生
B)对基类成员的访问必须是无二义性的
C)基类成员的访问能力在派生类中维持不变
D)赋值兼容规则也适用于多继承的组合
11派生类的构造函数的成员初始化列表中,不能包含(C)。
A)基类的构造函数B)派生类中子对象
的初始化
12.下列虚基类的声明中,正确的是: (B)
A)class virtual B: public AB)class B: virtual public A
一、选择题
1.在C++中,类与类之间的继承关系具有(C)
A)自反性B)对称性C)传递性D)反对称性
2.在公有继承的情况下,基类的成员(私有的除外)在派生 类中的访问权限(B)
A)受限制B)保持不变C)受保护D)不受保护
3.按解释中的要求在下列程序划线处填入的正确语句是:
(C)
#in elude <iostream.h>
相关文档
最新文档