C++程序设计练习题与答案(1)
更新时间:2024-03-05 16:17:02 阅读量: 综合文库 文档下载
C++程序设计练习题
一、填空题
1.对象的三大基本特性分别为多态性、( )、封装性。 2.赋值运算符应重载为( )函数。 3.用( )声明的基类称为虚基类。 4.用( )声明的函数称为虚函数。
5.派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的( )。 6.静态成员是对象的成员,( )函数不是类的成员。
7.在函数体之前加( )关键字可以防止覆盖函数改变数据成员的值。 8.一个const对象只能访问( )成员函数。
9.使用友元函数是为了提高程序效率,且节约了( )开销。
10.类名为“ClassName”的类,其拷贝构造函数的原型说明是( )。
11.由关键字private、public和protected限定成员的访问权限分别是( )、( )和( )。缺省关键字时成员的访问权限为( )。
12.如果想要公共基类在派生类中只有一个拷贝,就要将公共的基类说明为( );如果虚基类没有默认构造函数,就必须在每一个派生类的构造函数中都要调用虚基类的( )函数。
13.静态成员函数是使用关键字( )说明的成员函数。
14.一个函数的原型声明为“void FunName(int=0, double=0, char='x');”,则调用FunName函数的方法共有( )种。
15.编译时多态性是通过( )实现的;运行时多态性是通过( )实现的。 16.C++通过( )实现编译时多态性,通过( )实现运行时多态性。 17.在C++中,声明类的关键字是( )。 18.声明C++模板的关键字是( )。
19.调用函数原型声明为“void FunName(short, int=0, float=1.0);”的方法有( )种。 20.处理C++异常的方法:采用( )结构。
21.用关键字( )、( )和( )限定的成员,其访问权限分别为:公有的、私有的和保护的。缺省关键字时,成员的访问权限为( )。
22.在C++中,处理( )的方法是采用try-catch结构。 23.在C++中,用关键字( )说明内置函数。 24.在C++中,声明友元函数的关键字是( )。
25.将公共基类说明为( )时,多重派生过程中公共基类在派生类中就只有一个拷贝了。 26.在C++中,如果函数调用在前、定义在后,就必须先对函数进行( )。 27.在成员函数头之后、函数体之前加( )修饰的成员函数称为类的常成员函数。
28.包含纯虚函数的类称为抽象类,这种类只能用作( )来派生新类。由于抽象类的特殊性,我们可以说明抽象类的( ),但不能说明抽象类的( )。
29.说明函数类型为“double”、函数名为“virfun”且无参数的纯虚函数的表达形式为( )。 30.说明静态成员要使用关键字( )。
31.当函数调用在前定义在后时,必须先对函数进行( )说明。 32.类名为“ClassN”的类的拷贝构造函数的函数原型说明为( )。
33.抽象类是包含( )的类,必须注意:不能说明抽象类的( ),但可说明抽象类的( )。 34.流插入运算符<<只能重载为友元函数,重载流插入运算符<<的函数名为( )。
35.要防止在该成员函数中改变数据成员的值,就要在类的成员函数名之后、函数体之前加上关键字( )。
1
36.类和对象的关系可表述为:类是对象的( ),而对象则是类的( )。
37.在C++中,三种继承方式的说明符号为( )、( )和( ),如果不加说明,则默认的继承方式为( )。
38.如果只想保留公共基类的一个复制,就必须使用关键字( )把这个公共基类声明为虚基类。 39.若要把void myfun( )定义为类A的友元函数,则应在类A的声明中加入语句( )。 40.类的静态成员分为( )和( )。
41.运算符重载要求保持其原来的操作数个数、( )、( )和语法结构。 42.通过关键字( )可以声明模板,通过关键字( )指定函数模板的类型参数。 43.请列出C++中两种用户自定义的数据类型:( )、( )。 44.构造函数的作用是( )。
45.后置自增运算符“++”重载为类的成员函数(设类名为ClassName)的形式为( )。
二、单选题
1.继承机制的作用是( ) A) 信息隐藏
B) 数据封装 B) 类的初始化 B) 创建对象时
C) 定义新类
D) 数据抽象
D) 删除对象创建的所有对象 D) 不自动调用
2.类的析构函数的作用是( ) A) 一般成员函数 A) 类创建时
C) 对象的初始化 C) 删除对象时
3.类的析构函数是在( )调用的。
4.在( )情况下适宜采用inline定义内联函数。 A) 函数体含有循环语句
B) 函数体含有递归语句 D) 函数代码多、不常调用 B) 类B的成员即类A的成员
C) 函数代码少、频繁调用
5.如果类A被说明成类B的友元,则( ) A) 类A的成员即类B的成员
C) 类A的成员函数不得访问类B的成员 D) 类B不一定是类A的友元 6.在类中声明转换函数时不能指定( ) A) 参数 A) 受限制
B) 访问权限 B) 保持不变 B) 构造函数
C) 操作 C) 受保护 C) 虚函数
D) 标识符 D) 不受保护 D) 静态成员函数 D) 赋值构造函数 D) 抽象类
7.在公有继承的情况下,基类成员在派生类中的访问权限( ) 8.在C++类体系中,不能被派生类继承的有( ) A) 转换函数
9.假定ClassN为一个类,则执行“ClassN x;”语句时将自动调用该类的( ) A) 有参构造函数 A) 类的嵌套
B) 无参构造函数 B) 类的继承
C) 拷贝构造函数 C) 虚函数
10.C++语言建立类族是通过( )
11.重载一元运算符--为类A的成员运算符,若有类A的对象obj,则表达式--obj被C++编译器解释为( )。
A) obj.operator -- ( ) B) operator -- (obj) C) obj::operator -- ( ) 12.以下有四种关于类的说法,其中不正确的是( )。
A) 构造函数可以指定参数,但不能指定函数类型 C) 析构函数不可以指定参数,但可以指定函数类型 A) 结构
B) 数组
C) 类
D) 函数
B) 析构函数不可以指定函数类型,但可以指定函数参数
2
D) obj:operator -- ( )
B) 一个类可以有多个构造函数 D) 一个类只能有一个析构函数
13.面向对象程序设计讲求封装性,在C++中封装是借助于( )实现的。 14.下面有四种关于类的说法,其中不正确的是( )。 A) 一个类可以有多个构造函数
C) 一个类只能有一个析构函数 D) 在一个类中可以说明其它类的对象
B) 基类的保护成员在派生类中仍然是保护的 D) 基类的私有成员在派生类中是不可访问的
15.下列有关基类的叙述中不正确的是( ),前提为“公有派生”。 A) 基类的公有成员在派生类中仍然是公有的 C) 基类的私有成员在派生类中仍然是私有的
16.以下有四种关于友元的描述,其中错误的是( )。
A) 类A的友元类B的成员函数都是类A的友元函数 B) 友元函数可以访问该类的私有数据成员 C) 类与类之间的友元关系可以继承
D) 友元可以提高程序的运行效率
17.C++的封装性是借助于( )实现的。
A) 函数
B) 数组
C) 结构
D) 类
18.要将--重载为类ClassN的后置友元运算符,那么,要在类中添加的原型说明为( )。 A) friend ClassN operator -- (ClassN &, int); B) friend ClassN operator -- (ClassN &); C) friend ClassN operator -- (int); D) friend ClassN operator -- ( ); 19.在公有派生时,下列描述中不正确的是( )。 A) 派生类的对象可以赋给基类的对象
B) 派生类对象的地址可以赋给指向基类的指针
C) 派生类的对象可以初始化基类的引用
D) 当基类的指针指向派生类对象时,通过该指针可以直接访问派生类中的成员 20.以下关于继承成员的访问属性的叙述中,不正确的是( )。 A) 基类的保护成员在私有派生类中是私有的 B) 对基类成员的访问必须没有二义性 C) 基类的保护成员在保护派生类中是保护的
D) 基类的保护成员在派生类中是保护的
三、程序改错题(改正下列类中的错误)
1.
class ClassN {
private: int nmember; ClassN pmember; public: ClassN( ); int ClassN(int x); } 2.
void main() {
char c[] = new char [20]; delete c; } 3.
class MyClass {
private: int n=1; MyClass pO;
public: MyClass(int a = 0); void ~MyClass(int a); }; 4.
#include
3
int & par = new int [6]; delete par;
cout >> \主函数End!\} 5.
#include
long & par = new long [9]; delete par;
cout << \主函数End!\} 6.
CLass CN {
private: long n; CN pobj; public: CN(); void CN(int X); };
四、分析程序输出题
1.
#include
public:
A() { cout<<\ } ~A() { cout<<\ } };
class B: public A {
public:
B() { cout<<\ } ~B() { cout<<\ } };
class C : public B {
public:
C() { cout<<\ } ~C() { cout<<\ } };
void main() { C c1; } 2.
4
#include
int p; p=a; a=b; b=p; }
void exchange(int &a,int &b,int &c) {
if(a
void main() {
int a=12,b=89,c=56; exchange(a,b,c);
cout<<\} 3.
#include
int num; public:
TC();
int TEST() { return num; } ~TC(); };
TC::TC() { num=0; }
TC::~TC(){ cout<<\ } void main() {
TC tarr[5];
cout<<\} 4.
#include
private: int n;
public: CBase(int m = 0) { n = m; }
virtual void print( ) { cout << \};
class CDrive: public CBase {
private: int n;
public: CDrive( ) { n = 0; }
CDrive(int a, int b) : CBase(a) , n(b) { }
void print( ) { cout << \ }
5
}
};
void main( ) {
CBase b1, b2(99), *pb; CDrive dd(11, 22); pb = &b1; pb->print( ); pb = &b2; pb->print( ); pb = ⅆ pb->print( );
pb->CBase::print(); } 5.
#include
private:
long num; public:
CTest( ); ~CTest( ); };
CTest::CTest( ) { num = 0; }
CTest::~CTest( ) { cout << \调用析构函数\
void main( ) {
CTest cobj;
cout << \退出主函数\} 6.
#include
private: int n;
public: CN(int i) { n=i; }
operator int() { return n; } };
void main() {
CN cobj(123); cout< 6 } #include int num = 100; int & ref = num; cout << ref << endl; ref = ref + 100; cout << num << endl; num = num + 100; cout << ref << endl; } 8. #include private: long num; public: CName( ); ~CName( ); }; CName::CName( ) { num = 0; } CName::~CName( ) { cout << \调用析构函数\ } void main( ) { CName carr[2]; cout << \退出main\} 9.分析下列程序并写出程序的运行结果。 #include private: int n; public: CBase(int m = 0) { n = m; } virtual void print( ) { cout << \ }; class CDrive: public CBase { private: int n; public: CDrive( ) { n = 0; } CDrive(int a, int b) : CBase(a) , n(b) { } void print( ) { cout << \ } }; void main( ) { CBase ba, bb(100), *pb; 7 } CDrive dd(123, 456); pb = &ba; pb->print( ); pb = &bb; pb->print( ); pb = ⅆ pb->print( ); pb->CBase::print(); } 10. #include private: int n; public: CT(int i) { n=i; } operator int() { return n; } }; void main() { CT cObj(1234); cout< 五、编程题 1.下列类成员函数的定义不完整,请在____处填代码以使其完整。 class TC { private: int num; float x; public: TC(int, float); TC(TC&); }; TC::TC(int n, float f) { num = n; _______; } TC::TC(TC& t) { _______; x = t.x; } 2.根据下面的主程序,完成类说明的最小形式(不要求实现成员函数的定义)。#include private: _______; public: _______; 8 }; void main() { Base bo(6); } 3.一个类的头文件如下所示,程序产生对象tco,且tco.num=10,并使用Show( )函数输出这个对象的值。 //tcn.h class TCN { private: int num; public: TCN(int n) { num=n; } void Show () { cout< #include _______; _______; } 4.完成下面类中的成员函数的定义(在____处填写适当的内容)。 class CTN { private: int men; float mef; public: CTN(int, float); CTN(CTN &); }; CTN::CTN( ) { men = a; = b; } CTN::CTN( rObj ) { men = ; mef = .mef; } 5.在___处填写适当内容,以便完成下列类成员函数的定义。 class CN { private: int mn; float mf; public: CN(int = 0, float = 0); CN(CN &); }; CN::CN( ) { this->mn = mn; = mf; } CN::CN( rObj ) 9 { mn = ; mf = .f; } 6.填上合适的字句,使程序的最终结果为200。 #include private: int val; public: CNumber(int i) { val=i; } _______int( ); }; CNumber::operator int() { _______ } class num : public CNumber { public: num(int i) : CNumber(i) { } }; void main() { num n(100); int i=n; cout< 7.下面是一个类的测试程序,设计出能使用如下测试程序的类: void main() { Test to; to.Init(300, 200); to.Print(); } 输出结果:300-200=100 8.已知复数类Complex的声明如下: class Complex { public: Complex(); Complex(double); Complex(double, double); friend Complex operator + (Complex &, Complex &); friend ostream & operator << (ostream &, Complex &); friend istream & operator >> (istream &, Complex &); private: double real, imag; }; 要求: (1)写出该类的所有构造函数的类外定义代码。 (2)写出对运算符“+”、“<<”、“>>”进行重载的运算符重载函数的定义。 9.下列AbstractC类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。 10
正在阅读:
C++程序设计练习题与答案(1)03-05
杭州富阳立新纸业有限公司3600型印花纸生产线技改项目03-06
2013安全教育日方案05-15
人教版小学语文常用汉字3000汉字大全04-27
分立元件OCL功率放大电路原理分析04-01
追悼会议程10-31
信号与系统习题库11-25
描写家乡优美的诗句 逢人渐觉乡音异04-24
阴盘奇门09-17
2012年九年级第一次质量检测数学试题06-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 练习题
- 程序设计
- 答案