郑大远程面向对象程序设计试题

《面向对象程序设计》第12章在线测试

第一题、单项选择题(每题1分,5道题共5分) 1、面向对象软件开发中使用的OOD表示( )

A、面向对象分析 C、面向对象语言

B、面向对象设计 D、面向对象方法

2、在面向对象方法中,对象执行它的操作是通过( )

A、自动执行 C、由外部强制执行

B、接受消息请求 D、外界直接访问其成员

3、对象的两大要素是()

A、数据和数据结构 C、属性和操作

B、名字和函数 D、操作和方法

4、关于对象模型的说法正确的事( )

A、对象模型是类、对象、类或对象之间关系的定义集

C、对象模型表示类/对象之间的结构关系

B、对象模型表示系统静态的数据性质

D、对象模型是客观对象的物理模型

5、面向对象分析的任务是( )

A、需求分析 C、定义问题领域类

B、建立用例模型 D、定义角色

第二题、多项选择题(每题2分,5道题共10分) 1、下面那些是面向对象的特征?( )

A、结构 B、类 C、重用 D、继承

2、下面哪些属于UML的图( )

A、用例图 B、类图 C、结构图 D、流程图

3、关于封装的说法正确的是( )

A、封装实现了信息隐藏 B、封装使对象与外界隔绝 C、封装使类不可见

D、封装将对象的属性和操作结合在一起

4、对象之间存在的关系包括( )

A、部分与整体 B、一般与特殊 C、实例连接 D、消息连接

5、下面的说法正确的是( )

A、软件就是程序,程序就是软件 B、软件开发的过程就是程序设计的过程

C、软件是程序、支持程序运行的数据以及与程序有关的文档资料的集合。 D、程序设计仅仅是软件开发过程的一个阶段。

第三题、判断题(每题1分,5道题共5分)

1、面向对象设计过程一般仍分为结构设计和详细设计。

正确

错误

2、UML 是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。

正确

错误

3、UML不是一种可视化的程序设计语言而是一种可视化的建模语言.

正确 错误 4、UML用若干个视图构造系统的模型,每个视图描述系统的一个方面。 正确 错误 5、类的关联关系通常采用函数设计方式。 正确 错误 《面向对象程序设计》第11章在线测试 第一题、单项选择题(每题1分,5道题共5分) 1、STL中算法访问容器的中介是( ) A、容器 C、算法 B、迭代器 D、数组 2、允许程序员以相同的方式处理不同的数据结构的是( ) A、容器 C、算法 B、迭代器 D、数组 3、列表list属于( ) A、顺序容器 C、前向容器 B、关联容器 D、双向容器 4、映射(map)属于( ) A、顺序容器 C、前向容器 B、关联容器 D、双向容器 5、多重映射(multimap)属于( ) A、顺序容器 C、前向容器 B、关联容器 D、双向容器 第二题、多项选择题(每题2分,5道题共10分) 1、按照算法对容器的影响可以将算法分成( ) A、可变序列算法 B、非可变序列算法 C、排序算法 D、数值计算算法

2、下面属于容器的头文件是( )

A、vector B、list C、quene D、set

3、下面的说法正确的是( )

A、STL中有sort函数,所以程序员不能定义名字叫sort的函数 B、STL中的sort函数在名字空间之外

C、程序员可以在自定义的名字空间内定义sort函数

D、使用STL的sort函数可以在源程序的开头加入using namespace std

4、下面属于顺序容器的是( )

A、向量 B、双队列 C、堆栈 D、列表

5、如果char str[]=“China!Great Wall”,生成string类型s并且s的字符串内容也是“China!Great Wall”的语句是( )

A、string s(str); B、string s(str,1); C、string s(str, 1,11); D、string s=str;

第三题、判断题(每题1分,5道题共5分) 1、迭代器是算法访问容器的中介。

正确 错误 2、算法就是一个按照一组定义明确的步骤来解决某个问题的处理过程。 正确 错误 3、向量(vector)、双队列(deque)、列表(list)都是顺序容器 正确 错误 4、堆栈(stack)、队列(queue)和多重映射(multimap)属于容器适配器 正确 错误 5、双向容器是指除了具有前向迭代器外,还具有逆向迭代器

《面向对象程序设计》第10章在线测试

第一题、单项选择题(每题1分,5道题共5分) 1、关于异常对象的说法正确的是( )

B、以传值方式传递异常对象时,抛出的是局部临时对象

C、以引用方式传递异常对象时,抛出的是局部静态对象

2、C++库中所有异常类的基类是( )

A、ios_base::failure C、dynamic_cast

A、异常对象需要先建立,再抛出

D、以指针方式传递异常对象时,抛出

的是全局临时对象

B、exception D、bad_cast

3、C++中异常处理的默认模式是( )

A、终止模式 C、挂起模式

B、恢复模式 D、暂停模式

4、关于重新抛出错误的说法是( )

A、重新抛出是指抛出原来的异常 C、只能在catch块中抛出

B、用throw语句再次抛出原来的异常 D、重新抛出时不能改变异常信号的值

5、为保证程序中的全局变量不与开发商提供的全局变量重名,可以采取的措施是( )

A、查阅手册,不起同样的名字

B、引入命名空间

C、避开不用

D、让开发商改名

第二题、多项选择题(每题2分,5道题共10分) 1、异常处理的优点是( )

A、提高程序可读性

B、程序的控制不会因产生异常而随意跳转 C、正常处理代码和异常处理代码隐式分离 D、与函数调用返回的控制方法一致

2、下面与异常处理相关的关键字有( )

A、Try B、Catch C、try D、catch

3、下面的说法正确的是()

A、引发异常用关键字throw

B、在被调用函数中检测到异常条件用throw都可以引发异常 C、被调用函数只有在try块中用throw才可以引发异常 D、检测到的异常由catch捕获并处理

4、try子句的作用是( )

A、代码的保护段

B、如果预料某段程序代码可能发生异常,就将该段代码放在try子句之后 C、try子句产生异常

D、try子句中的throw表达式产生异常

5、下面说法正确的是( )

A、函数声明void f(int i) throw ( int,char)说明函数f会引发int和char类型的异常

B、函数声明void f(int i) throw ( ) 不会引发任何类型的异常 C、函数声明void f(int i) throw ( )和void f(int i)是一样的 D、函数声明void f(int i)说明该函数不会引发异常 第三题、判断题(每题1分,5道题共5分) 1、异常如果没有要求程序立即进行处理,将会引起程序错误甚至崩溃的现象。 正确 错误 2、C++的异常处理机制就是捕捉异常进行异常处理。 正确 错误 3、抛出异常的模块并不负责异常的处理,该异常的处理可以程序中的任何位置。 正确 错误 4、C++引入了关键字throw和catch,用于进行异常处理。 正确 错误 5、异常信号传递方式有三种:传值方式、引用方式和指针方式。 正确 错误 面向对象程序设计》第08章在线测试 剩余时间: 34:00 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、面向对象方法的多态性是指( )。 A、一个类可以派生出多个特殊类 C、针对一消息,不同的对象可以以适合自身的方式加以响应 B、一个对象在不同的运行环境中可以有不同的变体 D、一个对象可以是由多个其他对象组合而成的 2、下列关于虚函数与函数重载区别的叙述中不正确的是( ) B、函数重载允许是非成员函数,虚函数只能是成员函数 A、函数说明形式上不同 C、函数重载的调用依据参数和类型的差别,虚函数则依据对象

D、函数重载的本体可以在类外定义,虚函数不可以

3、类 B 是类 A 的公有派生类,类 A 和类 B 中都定义了虚函数 func(),p 是一个指向类 A 对象的指针,则 p->A::func() 将 ( )

A、调用类 A 中的函数 func()

C、根据 p 所指的对象类型而确定调用类 A 中或类 B 中的函数 func()

B、调用类 B 中的函数 func()

D、既调用类 A 中函数,也调用类 B 中的函数

4、关于纯虚函数和抽象类的描述中,( )是错误的。

A、纯虚函数是一种特殊的虚函数,它没有具体的实现;

C、一个基类说明有纯虚函数,该基类的派生类一定不再是抽象类;

5、下面的说法正确的是( )

A、虚函数是成员函数

C、构造函数和析构函数都可以定义为虚函数

B、抽象类是指具有纯虚函数的类;

D、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。

B、虚函数可以是静态成员函数 D、虚函数可以是内联函数

第二题、多项选择题(每题2分,5道题共10分)

1、在派生类中重新定义虚函数时必须在 ( ) 方面与基类保持一致。

A、参数类型 B、参数个数 C、操作内容 D、返回值

2、下面说法正确的是( )

A、静态绑定在编写程序的时候完成 B、动态绑定在程序执行的时候完成 C、静态绑定在程序编译阶段完成 D、动态绑定是动态链接生成的

3、下面的说法正确的是( )

A、纯虚函数不需要定义

B、纯虚函数在派生类中实现 C、纯虚函数在基类中定义为0 D、纯虚函数是不具体实现的虚函数

4、下面的说法正确的是( )

A、抽象类只能做基类 B、抽象类是继承层次中的根 C、抽象类用abstract定义 D、抽象类中至少有一个虚函数

5、关于抽象类的说法正确的是( )

A、抽象类可以生成类对象

B、抽象类不能用作参数类型、函数返回类型或显式转换的类型 C、不能定义抽象类指针和引用 D、抽象类只能作为其他类的基类

第三题、判断题(每题1分,5道题共5分) 1、虚函数是用virtual 关键字说明的成员函数。

正确

错误

2、构造函数说明为纯虚函数是没有意义的。

正确

错误

3、纯虚函数是一种特殊的虚函数,它没有具体的实现

正确

错误

4、一个基类说明有纯虚函数,该基类的派生类一定不再是抽象类;

正确

错误

5、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。

正确

错误

《面向对象程序设计》第09章在线测试 剩余时间: 40:09 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、cout是I0流库预定义的: A、类 C、包含文件 B、对象 D、常量 2、在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是( ) A、fail C、bad B、eof D、good 3、在C++程序中使用的cin标识符是系统类库中定义的( )类中的一个对象。 A、istream C、iostream B、ostream D、fstream 4、在C++程序中使用的cout标识符是系统类库中定义的( )类中的一个对象。 A、istream C、iostream B、ostream D、fstream 5、seekg(-40,ios::cur)的意思是(A) A、读写位置从当前位置前移40个字节 C、读写位置从当前位置上移40个字节 B、读写位置从当前位置后移40个字节 D、读写位置从当前位置下移40个字节 第二题、多项选择题(每题2分,5道题共10分) 1、下面的说法正确的是( ) A、缓冲流就是缓冲区 B、缓冲流当缓冲区满时才刷新流的数据 C、非缓冲流不处理数据 D、非缓冲流也要使用缓冲区 2、下面提供输入操作的类是( ) A、ios B、istream C、iostream D、ostream

3、下面属于标准错误输出的流是( )

A、cin B、cout C、clog D、cerr

4、关于运算符“<<”的说法正确的是( )

A、“<<”如果用于cout后,则表示输出操作 B、“<<”也叫做插入运算符 C、“<<”运算符可以重载

D、“<<”是从流中提取一个字符序列

5、 下面的说法正确的是(AC)

A、cerr是标准错误输出流 B、cerr和cout一样是可以缓冲的 C、cerr不能重定向 D、cout也不能重定向

第三题、判断题(每题1分,5道题共5分)

1、系统在主存中开辟的、用来临时存放输入输出数据的区域,叫做输入输出缓冲区(简称缓冲区)。

正确

错误

2、二进制文件的写操作用成员函数write()

正确

错误

3、hex、oct、dec只对下一个输出有效

正确 错误 4、ostrstream是向字符数组的输出流,istrstream是从字符数组的输入流 正确 错误 5、ofstream是用于读文件的文件流 正确 错误

《面向对象程序设计》第07章在线测试 剩余时间: 40:23 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、下面叙述不正确 的是 ( ) A、派生类都用公有派生产生 C、赋值兼容规则也适用于多重继承的组合 B、对基类成员的访问必须是无二义性的 D、基类的公有成员在派生类中仍然是公有的 2、若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的 ( ) A、私有成员 C、保护成员 B、公有成员 D、保护成员或私有成员 3、对基类和派生类的关系描述中, 错误 的是 ( ) A、派生类是基类的具体化 C、派生类是基类定义的延续 B、基类继承了派生类的属性 D、派生类是基类的特殊化 4、假设ClassY:publicX,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为( ) A、X,Y; Y,X C、Y,X; X,Y B、X,Y; X,Y D、Y,X; Y,X 5、派生类的成员函数可以直接访问基类的( )成员。 A、所有 C、保护和私有 B、公有和保护 D、私有 第二题、多项选择题(每题2分,5道题共10分) 1、对于公有继承,基类中的私有成员在派生类中将 ( )。 A、不能够直接使用成员名访问 B、能够通过成员运算符访问 C、仍然是基类的私有成员 D、变为派生类的私有成员

2、下列对派生类的描述中正确的说法是:( )。

A、派生类至少有一个基类

B、派生类可作为另一个派生类的基类

C、派生类除了包含它直接定义的成员外,还包含其基类的成员 D、派生类所继承的基类成员的访问权限保持不变

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

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

4、含有虚基类的派生类的构造函数调用次序错误的是( )

A、虚基类,基类,派生类, 对象成员 B、基类,派生类,对象成员,虚基类 C、对象成员,基类,虚基类,派生类 D、基类,虚基类,对象成员,派生类

5、已知有下面的类定义: class A {?}; class B {?}; class C:public B, virtual public A{?}; C c;撤销c的时候,析构函数调用顺序错误的是( )

A、ABC B、CBA C、BAC

D、CAB 第三题、判断题(每题1分,5道题共5分) 1、基类的保护成员在派生类中仍然是保护成员。 正确 错误 2、基类的保护成员在私有派生类中是私有成员。 正确 错误 3、私有继承时基类中的public成员在派生类中是private的。 正确 错误 4、在公有继承中,基类中只有公有成员对派生类是可见的。 正确 错误 5、多继承情况下,派生类的构造函数的执行顺序取决于定义派生时所指定的各基类的顺序。 正确 错误

《面向对象程序设计》第06章在线测试 剩余时间: 30:16 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、设有函数模板 template<class Q> Q Sum(Q x, Q y){ return(x)+(y); } 则下列语句中对该函数模板错误的使用是 ( ) A、Sum(10,2); C、Sum(15.2f, 16.0f); B、Sum(5.0,6.7) ; D、Sum( ″ AB ″ , ″ CD ″ ); 2、以下关于函数模板叙述正确的是( )。 A、函数模板也是一个具体类型的函数 C、通过使用不同的类型参数,函数模板可以生成不同类型的函数 B、函数模板的类型参数与函数的参数是同一个概念 D、用函数模板定义的函数没有类型 3、下面函数模板定义中不正确的是( ) B、template<class Q> Q F(Q x){ return Q+x; return x+x; } C、template<class T> D、template<class T> T F(T x){return x*x; rA、template<class Q> eturn x>1; }

4、模板参数在函数参数表中出现的次数不可能是( )。

A、1 C、0

B、2 D、任意

5、下面函数模板的声明正确的是( )

A、template void fun(int x){?}

B、template < class T> void fun(int x){?} D、template <class T> void fun(class T x){?}

C、template < class T> void fun(T x){?}

第二题、多项选择题(每题2分,5道题共10分) 1、函数模板参数的说法正确的是( )

A、模板类型参数前只能用class关键字 B、模板非类型参数前不需要说明类型

C、每一个函数模板参数在函数参数表中都必须出现 D、模板类型参数名可以用来制定函数模板的返回类型

2、模板函数与函数模板的区别是( )

A、模板函数是函数模板的抽象 B、函数模板是模板函数的抽象 C、模板函数是函数模板的重载函数 D、函数模板是具体的函数

3、关于类模板的说法正确的是( )

A、类模板是类的抽象 B、类模板是模板类的抽象 C、类模板中用到通用类型参数

D、类模板和普通类一样可以用于定义对象

4、关于模板之间的关系说法错误的是( )

A、C++中有函数模板和类模板

B、函数模板是模板函数的实例化 C、类模板是模板类的实例化 D、对象是类模板的实例化 5、关于函数模板的实例化正确的说法是( ) A、模板函数在实例化之前要先声明 B、模板类型可以进行隐式的类型转化 C、模板函数是函数模板的特例 D、函数模板实例化生成的函数模板是重载函数 第三题、判断题(每题1分,5道题共5分) 1、函数模板中的每一个类型参数在函数参数表中必须至少使用一次。 正确 错误 2、类模板中不能带有静态成员。 正确 错误 3、类模板中可以使用无类型参数,所谓无类型参数就是值没有参数。 正确 错误 4、模板参数名在同一模板参数表中只能使用一次,但可在多个函数模板声明或定义之间重复使用。 正确 错误 5、模板参数在函数参数表中出现的次数没有限制。 正确 错误

《面向对象程序设计》第05章在线测试 剩余时间: 5:02 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。 A、a.operator==(b) B、b.operator==(a) C、operator==(a,b)

D、operator==(b,a)

2、如果表达式a++中的“++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。

A、a.operator++() C、operator++(a,1)

B、operator++(a) D、operator++(1,a)

3、双目运算符的调用格式是( )

A、双目运算符 左运算对象 右运算对象 C、左运算对象 双目运算符 右运算对象

B、双目运算符 右运算对象 左运算对象 D、右运算对象 双目运算符 左运算对象

4、一个程序中数组a和变量k定义为“int a[5][10],k;”,且程序中包含有语句“a(2,5)=++k*3;”,则此语句中肯定属于重载操作符的是( )。

A、( ) C、++

B、= D、*

5、下面是重载单目运算符-的成员函数原形,其中最符合-原来含义的是( )。

A、Value Value::operator-(Value); C、Value& Value::operator-(Value);

B、Value Value::operator-(int); D、Value& Value::operator-(Value&);

第二题、多项选择题(每题2分,5道题共10分) 1、关于运算符重载,下列说法错误的是( )。

A、所有的运算符都可以重载。

B、通过重载,可以使运算符应用于自定义的数据类型。 C、通过重载,可以创造原来没有的运算符。 D、通过重载,可以改变运算符的优先级。

2、下面不是运算符new重载的正确格式的是( )

A、void *类名::operator new(size_t size, int x, int y); B、int *类名::operator new(size_t size, int x, int y); C、void *类名::operator new(size_t size);

D、void *类名::operator new(int x, int y,size_t size);

3、重载del_ete运算符的格式错误的是( )

A、void * operator del_ete(void*); B、void * operator del_ete(void*,参数表); C、void * operator del_ete(参数表); D、void * operator del_ete();

4、下面关于逗号运算符的说法正确的是( )

A、逗号运算符是多目运算符

B、逗号运算符的表达式为“左运算数,右运算数”,返回值为右运算数的值。 C、逗号运算符可以重载为成员函数,形参只带右运算数。 D、逗号运算符的返回值为左运算数的值。

5、下面重载类型转换运算符的语句正确的是( )

A、class X {X operator (int);}; B、class X {operator(X, int);}; C、class X {operator Z( );}; D、class X {operator Y( );};

第三题、判断题(每题1分,5道题共5分)

1、多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。

正确

错误

2、对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数。

正确

错误

3、重载运算符保持原运算符的优先级和结合性不变。

正确

错误

4、重载比较运算符函数的返回值必须是bool类型。

正确

错误

5、重载=运算符没有实际意义,因为系统会为每一个类自动生成赋值运算符。

正确

错误

《面向对象程序设计》第03章在线测试 剩余时间: 36:03 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、假定AB为一个类,则执行 “AB r1=r2;”语句时将自动调用该类的( )。 A、无参构造函数 C、赋值重载函数 B、带参构造函数 D、拷贝构造函数 2、当一个类对象结束它的生存期的时侯,系统自动调用该类的( )。 A、无参构造函数 C、拷贝构造函数 B、带参构造函数 D、析构函数 3、类的构造函数被自动调用执行的情况是在定义该类的 ( ) A、成员函数时 C、对象时 B、数据成员时 D、友元函数时 4、假定AB为一个类,则执行“AB *p=new AB(1,2);”语句时共调用该类构造函数的次数为( )。 A、0 C、2 B、1 D、3 5、假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为( )。 A、abc C、this B、*this D、this& 第二题、多项选择题(每题2分,5道题共10分) 1、构造函数的初始化表一般用来( ) A、初始化常量数据成员 B、初始化子对象 C、初始化引用成员 D、初始化静态数据成员 2、下面关于构造函数的说法正确的是( ) A、构造函数的函数名与类名相同 B、构造函数可以重载

C、构造函数不可以设置默认参数 D、构造函数必须指定类型说明

3、下面关于静态数据成员的说法错误的是( )

A、静态数据成员是类的所有对象所共有的 B、静态数据成员要在构造函数内初始化 C、类的每个对象有自己的静态数据成员 D、静态数据成员不能通过类的对象调用

4、下列描述属于类的成员函数的是( )

A、构造函数 B、析构函数 C、友元函数 D、拷贝构造函数

5、下面关于常对象的说法正确的是()

A、在定义常对象时必须进行初始化。 B、常对象的数据成员不能被更新。 C、常对象不能作为类的成员。

D、通过常对象可以调用该对象的成员函数。

第三题、判断题(每题1分,5道题共5分)

1、假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为x->a。

正确

错误

2、C++允许使用友元,但是友元会破坏封装性。

正确

错误

3、如果类A的声明中将类B的对象作为数据成员,则称类A和类B之间是一种has-a关系,类B是类A的子对象。

正确 错误 4、当两个对象之间进行复制时,复制完成后这两个对象的内容将完全独立,没有关联。 正确 错误 5、this是一个隐含于每一个类的成员函数的特殊指针,它是一个指向正在被某个成员函数操作的对象的指针 正确 错误

《面向对象程序设计》第02章在线测试 剩余时间: 46:50 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、如果 class 类中的所有成员在定义时都没有使用关键字 pubilc,private,protected ,则所有成员缺省定义为: ( ) 。 A、A. public C、C. private B、B. protected D、D. static 2、类的构造函数被自动调用执行的情况是在定义该类的 ( ) A、成员函数时 C、对象时 B、数据成员时 D、友元函数时 3、一段程序的定义如下,在函数f()中将动态对象的成员n的值改为34的语句应该为 ( ) class A { int n; public: setn(int nl) {n=nl;} A(int x) {n = x; } } int f() {A * ptr = new A(45);... } A、A.n=34; C、ptr->setn(34); B、ptr.setn(34); D、setn(34); 4、假定AB为一个类,则执行 “AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( )。 A、3 C、5 B、4 D、9 5、假定AB为一个类,则执行“AB *p=new AB(1,2);”语句时共调用该类构造函数的次数为( )。 A、0 C、2 B、1 D、3 第二题、多项选择题(每题2分,5道题共10分) 1、下面有关类说法正确的是(A,B,D )

A、一个类可以有多个构造函数 B、一个类只有一个析构函数 C、析构函数需要指定参数

D、在一个类中可以说明具有类类型的数据成员

2、关于封装,下列说法中正确的是( )。

A、通过封装,对象的全部属性和操作结合在一起,形成一个整体 B、通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见) C、通过封装,每个对象都成为相对独立的实体 D、通过封装,对象的属性都是不可见的

3、假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的语句错误的是()。

A、x.a B、x.a()

C、x->GetValue() D、x.GetValue()

4、构造函数的初始化表一般用来()

A、初始化常量数据成员 B、初始化子对象 C、初始化引用成员 D、初始化静态数据成员

5、下面关于静态数据成员的说法错误的是(BCD)

A、静态数据成员是类的所有对象所共有的 B、静态数据成员要在构造函数内初始化 C、类的每个对象有自己的静态数据成员

D、静态数据成员不能通过类的对象调用 第三题、判断题(每题1分,5道题共5分) 1、 C++允许使用友元,但是友元会破坏封装性。 正确 错误 2、 所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。 正确 错误 3、 某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。 正确 错误 4、 如果类A的声明中将类B的对象作为数据成员,则称类A和类B之间是一种has-a关系,类B是类A的子对象。 正确 错误 5、 静态数据成员不从属于任何一个具体对象,所以必须在构造函数对它初始化。 正确 错误

《面向对象程序设计》第01章在线测试 剩余时间: 37:39 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、下面不属于C++语言的特点的是 A、C++支持数据封装 C、C++支持动态绑定 B、C++支持继承性 D、C++不允许破环封装 2、执行完下列语句后,a、b、c三个变量的值为多少?( ) a = 30; b = a++; c = ++a; A、a:32 ; b:30 ; c:32; C、a:32 ; b:31 ; c:30; B、a:30 ; b:31 ; c:32; D、a:31 ; b:32 ; c:30; 3、VC项目中可以添加的文件类型不可以是 A、.CPP C、.H B、.C D、.LIB 4、do-while语句的循环体至少执行 A、1次 C、无限次

B、0次 D、不一定

5、如果程序中有全局变量X和局部变量X,则在局部变量X的作用域内访问全局变量的方法是

A、不能访问 C、::X

B、X D、{X}

第二题、多项选择题(每题2分,5道题共10分) 1、C++的输入可以使用

A、scanf B、printf C、cin D、in

2、以下语句循环次数为无限次的是

A、for ( y=0,x=1;x>++y;x=I++) I=x; B、for(;;x++=I); C、while(1){x++;}

D、for(I=10;;I--)sum+=I;

3、内联函数正确的是

A、内联函数用inline关键字说明

B、内联函数调用时用具体的函数体代码替换函数调用 C、内联函数与预定义语句相同

D、在一个文件中定义的内联函数不可以在另一个文件中使用

4、关于重载函数正确的说法是

A、函数重载指在同一作用域内多个函数使用相同的函数名 B、重载函数的参数必须不同

C、重载函数的返回值类型必须不同 D、两个功能相似的操作可以重载函数得到

5、C++程序中声明变量 int *p1 , *p2 ,m=5, n;下面错误的语句是

A、p1=&m; p2=&p1; B、p1=&m; p2=&n;*p1=*p2 C、p1=&m;p2=p1; D、p1=&m;*p2=*p1;

第三题、判断题(每题1分,5道题共5分) 1、内联函数体内可以使用C++的所有控制语句。

正确

错误

2、对内联函数不能进行异常接口声明。

正确

错误

3、重载的函数的函数名是相同的,但它们的参数的个数、参数数据类型或返回值类型中至少应有一种是不同的。

正确

错误

4、定义引用变量的时候必须对其进行初始化。

正确

错误

5、数组 int array[10]中共有10 个整型元素,其下标值从1到10。

正确

错误

《面向对象程序设计》第04章在线测试 剩余时间: 45:33 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、若B类为A类的友元类,则下面的说法正确的是( ) A、B类的所有成员函数都是A类的友元函数 B、B类指定的成员函数才是A类的友元 D、B类的私有成员函数不能可以访问A类的私有成员 C、A类的所有成员函数可以访问B类的成员 2、一个类的友元不是该类的成员,与该类的关系密切,所以它( )。

A、有this指针,有默认操作的对象 C、有this指针,不能执行默认操作

B、没有this指针,可以有默认操作的对象 D、没有this指针,也就没有默认操作的对象

3、关于友元的说法正确的是( )

A、友元关系可以继承 C、友元关系不可以传递

B、友元关系是双向的 D、友元关系可以取消

4、关于友元类的定义正确的说法是( )

A、如果在类B中定义友元类A ,必须先定义类A C、如果在类B中定义友元类A ,可以定义类B,后定义类A,但是必须在类B的定义之前,对类A向前引用说明

5、一个类的友元函数或友元类能够通过成员操作符访问该类的( )

A、私有成员 C、公有成员

B、如果在类B中定义友元类A ,必须先定义类B

D、类A是类B的友元,类A 和类B 的定义顺序没有先后之分

B、保护成员 D、所有成员

第二题、多项选择题(每题2分,5道题共10分)

1、一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是( )。

A、有this指针,有默认操作的对象 B、没有this指针,可以有默认操作的对象 C、有this指针,不能执行默认操作

D、没有this指针,也就没有默认操作的对象

2、下面关于友元的说法正确的是( )

A、友元函数是拥有成员函数一切权利 B、友元是一种成员函数

C、友元可以直接访问类的所有成员 D、友元不能访问类的私有成员

3、下面关于友元函数正确的说法是( )

A、在类中用关键词friend声明友元函数 B、友元函数说明的位置只能在类的public区 C、友元函数的定义只能放在类的外部 D、友元函数不是类的成员函数

4、如果类 a 被说明成类 b 的友元,则下面的说法错误的是 ( ) 。

A、类 a 的成员即类 b 的成员 B、类 b 的成员即类 a 的成员

C、类 a 的成员函数不得访问类 b 的成员 D、类 b 不一定是类 a 的友元

5、下面关于友元函数使用特点的说明正确的是( )

A、友元函数可以绕开成员函数直接访问类的私有和保护成员,避免调用成员函数相关的开销 B、友元函数虽然不是类的成员函数,但是因为友元函数是在类内说明的,所以也带有用this指针 C、友元函数可以以使用类内的所有成员,因此破坏了数据的安全性

D、友元函数的形参如果是类对象,可以用对象名,对象的引用或者对象指针

第三题、判断题(每题1分,5道题共5分) 1、友元函数说明的位置只能在类的public区。

正确

错误

2、友元函数的定义只能放在类的外部,与类的成员函数放在一起。

正确

错误

3、如果函数f()要操作类A和类B的私有成员,可以把f()声明为类A的成员函数,把类A声明为类B的友元类。

正确

错误

4、友元具有传递性,单向性和继承性的特点。

正确

错误

5、一个函数可以是多个类的友元函数。

正确

错误

联系客服:779662525#qq.com(#替换为@)