大学计算机C++面向对象技术复习题汇总含答案.docx

上传人:b****8 文档编号:9652549 上传时间:2023-02-05 格式:DOCX 页数:22 大小:24.69KB
下载 相关 举报
大学计算机C++面向对象技术复习题汇总含答案.docx_第1页
第1页 / 共22页
大学计算机C++面向对象技术复习题汇总含答案.docx_第2页
第2页 / 共22页
大学计算机C++面向对象技术复习题汇总含答案.docx_第3页
第3页 / 共22页
大学计算机C++面向对象技术复习题汇总含答案.docx_第4页
第4页 / 共22页
大学计算机C++面向对象技术复习题汇总含答案.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

大学计算机C++面向对象技术复习题汇总含答案.docx

《大学计算机C++面向对象技术复习题汇总含答案.docx》由会员分享,可在线阅读,更多相关《大学计算机C++面向对象技术复习题汇总含答案.docx(22页珍藏版)》请在冰豆网上搜索。

大学计算机C++面向对象技术复习题汇总含答案.docx

大学计算机C++面向对象技术复习题汇总含答案

面向对象程序设计C++

复习资料与答案

第一、二、六、七章习题

一、选择题

1、系统约定C++源程序文件名的缺省的扩展名为()

A、bccB、c++C、cppD、vcc

2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。

A、对数据的操作B、信息C、数据隐藏D、数据抽象

3、当一个函数无返回值时,函数的类型应定义为()

A、voidB、任意C、intD、无

4、对于C++的函数,正确的叙述是:

A、函数的定义不能嵌套,但函数的调用可以嵌套

B、函数的定义不能嵌套,但函数的调用不能嵌套

C、函数的定义和调用都不能嵌套

D、函数的定义和调用都可以嵌套

5、下列语句中错误的是()

A、int*p=newint(10);B、int*p=newint[10]

C、int*p=newint;D、int*p=newint[40](0);

6、假设已经有定义:

constchar*constname=”chen”;,下面的语句中正确的是:

()

A、name[3]=’a’;B、name=”lin”;

C、name=newchar[5];D、cout<

7、假设已经定义:

char*constname=”chen”;,下面的语句中正确的是:

()

A、name[3]=’q’;B、name=”lin”;

C、name=newchar[5];D、name=newchar(‘q’);

8、假设已经定义:

constchar*name=”chen”;,下面的语句中错误的是:

()

A、name[3]=’q’;B、name=”lin”;

C、name=newchar[5];D、name=newchar(‘q’);

9、下面的类型声明中正确的是:

()

A、int&a[4];B、int&*p;C、int&&qD、inti,*p=&i;

10、假设定义了函数模板()

template

Tmax(Tx,Ty){return(x>y)?

x:

y;}

并定义了inti;charc;错误的调用语句是:

()

A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)

11、模板的使用是为了()

A、提高代码的可重用性B、提高代码的运行效率

C、加强类的封装性D、实现多态性

12、设有二个语句:

intx[‘a’];cin>>x;则编译器认为()

A、说明语句intx[‘a’]错B、二个语句都错

C、语句cin>>x错D、二个语句正确,没有语法错

13、设有语句:

voidf(inta[10],int&x);inty[10],*py=y,n;则对函数f的正确调用语句是()

A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)

14、在C++中实现封装是借助于()

A、枚举B、类C、数组D、函数

15、对于下面几个函数:

(1)voidf(intx,floaty){……}

(2)intf(inta,floatb){……}

(3)intf(inti,intj){……}

(4)floatk(intx){……}

是重载函数。

A、4个全部B、1和2C、2和3D、3和4

16、使用myFile.open(“Sales.dat”,ios:

:

app);语句打开文件Sales.dat后,则()

A、使输出追加到文件尾部

B、打开一个文件进行读操作

C、打开一个文件进行读和写操作

D、文件以二进制方式打开,默认时为文本文件

二、填空题

1、面向对象的程序设计有四大特征,它们是抽象、封装、、。

2、结构体类型中的数据和成员函数默认类型为      。

3、C++要求为每个函数建立原型,以说明函数的名称、参数的   和   ,以及函数返回值。

4、在函数说明前加关键字“inline”,则该函数被声明为   函数,其引入的目的是为了消除函数调用时的开销,以提高运行速度。

5、引用变量与被引用变量占有 内存单元。

6、   运算符能够用于访问当前作用域内与局部变量同名的全局变量。

7、#include

voids(inta,int&b){intt=a;a=b;b=t;}

voidmain(void)

{intx=500,y=1000;

cout<

程序的第一行输出为        ,第二行输出为        。

8、#include

voidmain(void)

{for(inta=1,b=1;a<=5;a++)

{if(b>=8)break;

if(b%2==1){b+=7;continue;}

b-=3;}

cout<<”a=”<

程序输出结果是a=,b=。

9、#include

intx=100;

voidmain(void)

{intx=200;x+=:

:

x;{intx=500;:

:

x+=x;}cout<

:

x<<’\n’;}

程序的第一行输出为        ,第二行输出为        。

10、#include

voidf(floatx=5,inty=16,charz=‘C’);

voidmain()

{floata=1.6;intb=2;charc='D';

f();f(a);f(a,b);f(a,b,c);}

voidf(floatx,inty,charz)

{cout<<“x=”<

程序的第二行输出为        ,第三行输出为        。

11、以下程序的输出结果是。

#include

chara[]=“ABCDEFGHI”;

char&f(int);

intmain()

{f(6)=‘X’;cout<

char&f(inti)

{returna[i];}

12、如果C++程序中使用了:

cout、strcpy,则必须在程序首部包含文件     和      。

  

13、#include

#include

voidmain()

{inti=7890;cout<

程序的第一行输出为        ,第二行输出为        。

14、#include

voidmain()

{inti=100;cout.setf(ios:

:

hex);cout<

:

dec);cout<

以上程序运行的结果是          

第三章类和对象

一、选择题

1、( )不是构造函数的特征。

 A、构造函数的函数名与类名相同;

 B、构造函数可以重载;

 C、构造函数可以设置缺省参数;

 D、构造函数必须指定类型说明。

2、下列关于构造函数的描述中,( )是正确的。

A、构造函数可以设置缺省参数;

B、构造函数可以被继承;

C、构造函数可以对静态数据成员进行初始化;

D、构造函数可以说明为虚函数;

3、( )是析构函数的特征。

 A、析构函数可以有一个或多个参数;

 B、析构函数名与类名不同;

 C、析构函数的定义只能在类体内;

 D、一个类中只能定义一个析构函数;

4、定义析构函数时,应该注意( )。

A、其函数名与类名完全相同;

B、函数返回类型是void类型;

C、无形参,也不可重载;

D、函数体中必须有delete语句;

5、下列静态数据成员的特性中,( )是错误的。

 A、说明静态数据成员时前边要加修饰符static;

 B、静态数据成员要在类体外进行初始化;

 C、静态数据成员不是所有对象所共用的;

 D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符;

6、友元的作用是( )。

 A、提高程序的运用效率;

 B、加强类的封装性;

 C、实现数据的隐藏性;

 D、增加成员函数的种类;

7、关于成员函数特征的下列描述中,( )是错误的。

 A、成员函数一定是内联函数;

 B、成员函数可以重载;

 C、成员函数可以设置缺省参数值;

 D、成员函数可以是静态的;

8、已知:

print()函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的;

 A、voidprint()const;

 B、constvoidprint();

 C、voidconstprint();

D、voidprint(const);

9、在( )情况下适宜采用inline定义内联函数。

A、函数体含有循环语句;

B、函数体含有递归语句;

C、函数代码小,频繁调用;

D、函数代码多,不常调用;

10、假定AB为一个类,则执行“AB a(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为()。

A、3             B、4              C、6              D、9

11、通常拷贝初始化构造函数的参数是()。

  A、某个对象名

B、某个对象的成员名

C、某个对象的引用名

D、某个对象的指针名

12、有关类的说法不正确的是()。

A、类是一种用户自定义的数据类型

B、只有类中的成员函数才能存取类中的私有数据

C、在类中,如果不作特别说明,所有的数据均为私有类型

D、在类中,如果不作特别说明,所有的成员函数均为公有类型

13、在声明类时,下面说法正确的的是()。

A、可以在类的声明中给数据成员赋初值

B、数据成员的类型可以是register

C、public,private,protected这三种属性的成员可以按任意顺序出现

D、没有用public,private,protected定义的成员是公有成员

14、已知:

p是一个指向类A数据成员m的指针,A1是类A的一个对象。

如果要给m赋值为5,()是正确的。

A、A1.p=5

B、A1->p=5

C、A1.*p=5

D、*A1.p=5

15、已知:

类A中一个成员函数说明如下:

voidSet(A&a);其中,A&a的含义是()。

A、指向类A的指针为a

B、将a的地址值赋给变量Set

C、a是类A的对象引用,用来作函数Set()的形参

D、变量A与a按位相与作为函数Set()的参数

16、下列说明中constchar*ptr;ptr应该是()。

A、指向字符型常量的指针

B、指向字符的常量指针

C、指向字符变量的指针

D、指向字符串的常量指针

17、采用函数重载的目的在于:

A、实现共享B、减少空间

C、提高速度D、使用方便,提高可读性

18、有关类和对象的说法下列不正确的是()。

A、对象是类的一个实例

B、任何一个对象只能属于一个具体的类

C、一个类只能有一个对象

D、类与对象的关系和数据类型和变量的关系相似

19、有以下类的说明,请指出错误的地方()。

ClassCSample

{

inta=2.5;A

CSample();B

public:

CSample(intval);C

~CSample();D

};

20、在类的定义形式中,数据成员、成员函数和()组成了类定义体。

A、成员的访问控制信息

B、公有消息

C、私有消息

D、保护消息

二、填空题

1.通常的拷贝初始化构造函数的参数是_________________

2.在C++中函数参数的传递方式有三种,分别是:

__________、__________和__________。

3.任何类中允许有三种访问权限的数据,这三种访问权限分别是__________、__________和__________。

4.类中数据成员和成员函数的默认类型为______________

5.在类内部定义的__________和__________数据不能被不属于该类的成员函数来存取,定义为__________的数据,可以在类外部进行存取。

6.__________是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。

7.一个类中有__________个析构函数。

8.__________成员函数中不能直接引用类中说明的非静态成员。

9.已知类Sample中的一个成员函数说明如下:

voidSet(Sample&a);

其中,Sample&a的含意是_________________

10.静态数据成员属于类,可以使用_______________的方式访问静态的数据成员。

11.编译程序将this指针指向_____________。

12.以下程序的执行结果是__________。

#include

classSample

{public:

Sample(){cout<<“constructore”<

};

voidfn(inti)

{staticSamplec;

cout<<“i=”<

}

voidmain()

{fn(10);

fn(20);

}

13.以下程序的执行结果是_______________。

#include

classsample

{private:

intn;

staticintk;

public:

sample(inti){n=i;k++;};

voiddisp();

};

voidsample:

:

disp()

{cout<<"n="<

intsample:

:

k=0;

voidmain()

{samplea(10),b(20),c(30);

a.disp();

b.disp();

c.disp();

}

14.以下程序的执行结果是_______________

#include

classsample

{intx;

public:

voidsetx(inti){x=i;}

intputx(){returnx;}

};

voidmain()

{sample*p;

sampleA[3];

A[0].setx(5);

A[1].setx(6);

A[2].setx(7);

for(intj=0;j<3;j++)

{p=&A[j];

cout<putx()<<"";

}

cout<

}

15.以下程序的执行结果是_______________

#include

classA

{public:

A(){cout<<"ConstructingA\n";}

~A(){cout<<"DestructingA\n";}

};

classB

{public:

B(){cout<<"ConstructingB\n";}

~B(){cout<<"DestructingB\n";}

};

main()

{Aa;

Bb;

return0;

}

第四章派生类与继承

一、选择

1、从一个基类派生出的各个类的对象之间

(1)。

A、共享所有数据成员,每个对象还包含基类的所有属性

B、共享部分数据成员,每个对象还包含基类的所有属性

C、不共享任何数据成员,但每个对象还包含基类的所有属性

D、共享部分数据成员和成员函数

2、C++的继承性允许派生类继承基类的

(2)。

A、部分特性,并允许增加新的特性或重定义基类的特性

B、部分特性,但不允许增加新的特性或重定义基类的特性

C、所有特性,并允许增加新的特性或重定义基类的特性

D、所有特性,但不允许增加新的特性或重定义基类的特性

3、对于公有继承,基类的公有和保护成员在派生类中将(3)成员。

A、全部变成公有B、全部变成保护

C、全部变成私有D、仍然相应保持为公有和保护

4、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(4)的构造函数。

A、自己所属类、对象成员所属类、基类

B、对象成员所属类、基类、自己所属类

C、基类、对象成员所属类、自己所属类

D、基类、自己所属类、对象成员所属类

5、派生类的对象对其基类中(5)可直接访问。

A、公有继承的公有成员B、公有继承的私有成员

C、公有继承的保护成员D、私有继承的以有成员

6、设类B是基类A的派生类,并有语句:

Aaa,*pa=&aa;Bbb,*pb=&bb;则正确的语句是___(6)__。

A、pb=pa;B、bb=aa;C、aa=bb;D、*pb=*pa;

7、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是_(7)__.

A、派生类的对象可以赋给基类的对象

B、派生类的对象可以初始化基类的引用

C、派生类的对象可以直接访问基类中的成员

D、派生类的对象的地址可以赋给指向基类的指针

8、若类X和类Y的定义如下:

classX

{inta,b;

public:

voidfx();

};

classY:

publicX

{intc;

public:

voidfy();

};

voidY:

:

fy(){c=a*b;}

则上述代码中,(8)是非法的语句。

A、voidfx();B、k=a*b;C、voidfy();D、intc;

9、如果一个派生类的基类不止一个,则这种继承称为__(9)__。

A、单继承B、虚继承C、多态继承D、多重继承

10.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:

(10)  。

A、 AB operator+(AB &a,AB &b)      B、 AB operator+(AB &a)

C、 operator+(AB a)                      D、 AB &operator+()

11、下面叙述不正确的是(11)  。

A、派生类可以使用private派生

B、基类的public成员在派生类中仍然是public

C、对基类成员的访问必须是无二义性的

D、赋值兼容原则也适合多重继承的组合

12、下面叙述不正确的是(12)  。

A、基类的protected成员在派生类中仍然是protected

B、基类的protected成员在public派生类中仍然是protected

C、基类的protected成员在private派生类中仍然是private

D、对基类成员的访问必须是无二义性的

13、下面叙述不正确的是(13)  。

A、成员的访问能力在private派生类中和public派生类中仍是不同的

B、基类的private成员在public派生类中不可访问

C、赋值兼容规则不适合于多重继承的组合

D、public基类成员在protected派生中是protected

14、下面叙述正确的是(14)  。

A、基类的对象可以赋给派生类

B、只要是基类的对象,都可以赋给由它派生的任一个派生类对象

C、只有该基类直接派生出来的类的对象才可以赋给该基类的对象

D、公有派生类的对象可以赋给基类的对象

15以下程序的输出结果为是(15)。

#include

classA

{public:

intn;};

classB:

virtualpublicA{};

classC:

virtualpublicA{};

classD:

publicB,publicC

{intgetn(){returnB:

:

n;}};

voidmain()

{Dd;d.B:

:

n=10;d.C:

:

n=20;

cout<

:

n<<","<

:

n<

}

A、10,20B、20,20C、10,10D、输出有二义性,不确定

二、填空题

1、在C++中派生类时,可以有

(1)、

(2)和(3)三种不同的方式。

2、公有派生类不能访问基类的(4)成员,但是派生类可以访问基类的(5)成员和(6)成员。

3、构造函数不能被继承,因此,派生类的构造函数必须通过调用(7)构造函数进行初始化基类的对象。

4、保护派生具有双重作用:

对(8),具有公有性,对其他外部,具有(9)。

5、在多重派生中,要使公共基类在派生类中只有一个拷贝,必须将该基类说明为(10)。

第五章多态性

一、单选题

1、下列运算符中,______运算符在C++中不能重载。

A、?

:

B、+C、—D、<=

2、下列运算符中,______运算符在C++中不能重载。

A、>B、[]C、:

D、<<

3、在C++中,通常重载运算符的成员函数称为______。

A、运算符函数B、重载函数

C、函数重载运算符D、以上都不对

4、下列函数中,______不能重载。

A、成员函数B、非成员函数C、析构函数D、构造函数

5、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是______。

A、参数的个数B、参数的类型

C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1