北交17春《面向对象的程序设计》在线作业答案
一、单选题(共 23 道试题,共 57.5 分。)V1.有如下类声明: class Foo { int bar; }; 则Foo类的成员bar是( )
A. 公有数据成员
B. 公有成员函数
C. 私有数据成员
D. 私有成员函数
标准答案:C
2.下面的哪个保留字不能作为函数的返回类型? ( )
A. void
B. int
C. new
D. long
标准答案:C
3.设x和y均为bool量,则x&&y为真的条件是 ( )
A. 它们均为真
B. 其中一个为真
C. 它们均为假
D. 其中一个为假
标准答案:A
4.作用域运算符的功能是( )
A. 给定作用域的大小
B. 表示作用域的级别的
C. 某个成员是属于哪个类的
D. 指出作用域的范围的
标准答案:C
5.下列关于C++函数的叙述中,正确的是()
A. 每个函数至少要具有一个参数
B. 每个函数都必须返回一个值
C. 函数在被调用之前必须先声明
D. 函数不能自己调用自己
标准答案:C
6.文件操作中,打开文件的访问模式常量中,( )是以追加方式打开文件的。
A. ios::in
B. ios::out
C. ios::binary
D. ios::ate
标准答案:D
7.要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是( )
A. int vect[ ]={30,50,-88};
B. int vect[ ]={30,50,-88,0,0};
C. int vect={30,50,-88};
D. int vect={30,50,-88,0,0};
标准答案:A
8.下面( )不是构造函数的特征。
A. 构造函数可以重载
B. 构造函数可以设置缺省参数
C. 构造函数的函数名和类名相同
D. 构造函数必须指定返回值类型
标准答案:D
9.下列的各函数中,( )不是类的成员函数。
A. 构造函数
B. 析构函数
C. 拷贝初始化构造函数
D. 友元函数
标准答案:D
10.下面函数的功能是( )。 void fun(char s1[ ], char s2[ ]) { while(s2++=s1++); }(
A. 字符串比较
B. 字符串复制
C. 字符串连接
D. 字符串反向
标准答案:B
11.在以下关于C++语言的注释的叙述中,不正确的是( )
A. C++程序中,注释可用“/*”、“*/”形式表示,也可用“//”形式表示
B. C++编译器在编译一个程序时,将跳过注释,不对其进行处理
C. C++编译器在编译一个程序时,可发现注释中的单词拼写错误
D. 程序中注释的多少不会影响所生成的可执行文件的长度
标准答案:C
12.下列关于this指针的叙述中,正确的是( )
A. 任何与类相关的函数都有this指针
B. 类的成员函数都有this指针
C. 类的友元函数都有this指针
D. 类的非静态成员函数才有this指针
标准答案:D
13.下面关于派生类的描述中,( )是错的。
A. 一个派生类可以作为另一个派生类的基类
B. 派生类至少有一个基类
C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员
D. 派生类中继承的基类成员的访问权限到派生类保持不变
标准答案:D
14.有关运算符重载正确的描述是( )。
A. C++语言允许重载运算符时改变运算符的操作个数
B. C++语言允许重载运算符时改变运算符的优先级
C. C++语言允许重载运算符时改变运算符的结合性
D. C++语言允许重载运算符时改变运算符原来的功能
标准答案:D
15.下面关于C++流的叙述中,正确的是( )
A. cin是一个输入流对象
B. 可以用ifstream定义一个输出流对象
C. 执行语句序列char *y="PQMN"; cout<
D. 执行语句序列char x; cin.getline(x,80); 时,若键入 Happy new year 则x中的字符串是"Happy"
标准答案:A
16.在下面的一维数组定义中,哪一个有语法错误。( )
A. int a[ ]={1,2,3}
B. int a={0}
C. int a[ ]
D. int a
标准答案:C
17.有如下程序: #include <iostream>using namespace std; class AA{ int n; public: AA(int k):n(k){ } int get( ){ return n;} int get( )const{ return n+1;} }; int main( ) { AA a(5); const AA b(6); cout<<a.get()<<b.get(); return 0; } 执行后的输出结果是( )
A. 55
B. 57
C. 75
D. 77
标准答案:B
18.下列静态数据成员的特性中,错误的是( )
A. 说明静态数据成员前边加static
B. 静态数据成员要在类体外初始化
C. 引用静态数据成员时,要在静态数据成员前加和作用域运算符
D. 静态数据成员不是一个类所有对象共享的
标准答案:D
19.有如下类声明: class MyBASE{ int k; public: void set(int n){ k=n;} int get( )const{ return k; } }; class MyDERIVED: protected MyBASE{ protected: int j; public: void set(int m, int n){MyBASE::set(m); j=n;} int get( )const{ return MyBASE::get( )+j; } }; 则类MyDERIVE
A. 4
B. 3
C. 2
D. 1
标准答案:B
20.已知枚举类型定义语句为: enum Token { NAME, NUMBER, PLUS = 5, MINUS, PRINT = 10 }; 则下列叙述中错误的是( )(
A. 枚举常量NAME的值为1
B. 枚举常量NUMBER的值为1
C. 枚举常量MINUS的值为6
D. 枚举常量PRINT的值为10
标准答案:A
21.有如下程序: #include using namespace std; class A { public: A( ) { cout << "A"; } }; class B { public: B( ) { cout << "B"; } }; class C : public A { B b; public: C( ) { cout << "C"; } }; int main( ) { C obj; return 0; } 执行后的输出结果是( )
A. CBA
B. BAC
C. ACB
D. ABC
标准答案:D
22.下列函数中,( )是对文件进行读操作的。
A. read()
B. write()
C. tellg()
D. seekp()
标准答案:A
23.执行语句序列 int i=0; while(i<25) i+=3; cou<<i; 输出结果是/( )
A. 24
B. 25
C. 27
D. 28
标准答案:C
二、多选题(共 2 道试题,共 5 分。)V 1.下列函数中,可以作为虚函数的是( )。
A. 普通函数
B. 非静态成员函数
C. 构造函数
D. 析构函数
标准答案:BD
2.下面关于析构函数描述正确的是( )
A. 系统可以提供默认的析构函数
B. 析构函数必须由用户定义
C. 析构函数没有参数
D. 析构函数可以设置默认参数
标准答案:AC
三、判断题(共 15 道试题,共 37.5 分。)V 1.一般对象和指向对象指针的成员函数表示分别是运算符.和->。( )
A. 错误
B. 正确
标准答案:B
2.友元函数说明在类体内它是一种成员函数 。( )
A. 错误
B. 正确
标准答案:A
3.变量必须先定义后赋值。( )
A. 错误
B. 正确
标准答案:B
4.在类体内允许对数据成员进行初始化 。( )
A. 错误
B. 正确
标准答案:A
5.纯虚函数是一种不给出具体实现的虚函数。( )
A. 错误
B. 正确
标准答案:B
6.用new动态申请的内存是在堆中分配的,而不是在栈中分配的。( )
A. 错误
B. 正确
标准答案:B
7.多重继承中,派生类构造函数对其基类构造函数的执行顺序取决于它成员函数初始化表中说明的基类顺序。( )
A. 错误
B. 正确
标准答案:A
8.派生类不能作为基类派生出新类。( )
A. 错误
B. 正确
标准答案:A
9.友元类中所有成员函数都是友元函数 。( )
A. 错误
B. 正确
标准答案:B
10.常量不能作为左值使用。( )
A. 错误
B. 正确
标准答案:B
11.析构函数是不能重载的 。( )
A. 错误
B. 正确
标准答案:B
12.在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有多态的特征。( )
A. 错误
B. 正确
标准答案:A
13.抽象类中只能有一个纯虚函数。( )
A. 错误
B. 正确
标准答案:A
14.类的友元函数可以直接访问该类的所有成员。( )
A. 错误
B. 正确
标准答案:B
15.一个类可以作为另一个类的友元类。( )
A. 错误
B. 正确
标准答案:B
一、单选题(共 23 道试题,共 57.5 分。)V 1.假定AB为一个类,则执行“AB a(4) , b , * p ;”语句时,自动调用该类构造函数的次数为( )。
A. 3
B. 4
C. 6
D. 9
标准答案:B
2.下列关于C++函数的说明中,正确的是( )
A. 内联函数就是定义在另一个函数体内部的函数
B. 函数体的最后一条语句必须是return语句
C. 标准C++要求在调用一个函数之前,必须先声明其原型
D. 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
标准答案:C
3.下列有关类的说法不正确的是( )。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类
C. 一个类只能有一个对象
D. 类与对象的关系和数据类型与变量的关系相似
标准答案:C
4.下列关于运算符重载的叙述中,正确的是( )
A. 通过运算符重载,可以定义新的运算符
B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+
D. 重载一个二元运算符时,必须声明两个形参
标准答案:B
5.通常拷贝构造函数的参数是()
A. 某个对象名
B. 某个对象的成员名
C. 某个对象的引用名
D. 某个对象的指针名
标准答案:C
6.对于包括()类型数据成员的用户定义类型必须定义其析构函数
A. static
B. 指针类型
C. 字符串
D. 字符型
标准答案:B
7.下面关于析构函数特征的描述正确的是( )。
A. 一个类中可以定义多个析构函数
B. 析构函数名与类名相同
C. 析构函数不能指定返回类型
D. 析构函数可以有一个或多个参数
标准答案:C
8.已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是( )
A. 这是运算符-的重载运算符函数
B. 这个函数所重载的运算符是一个一元运算符
C. 这是一个成员函数
D. 这个函数不改变类的任何数据成员的值
标准答案:B
9.for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是()
A. 0
B. 5
C. 6
D. 无数次
标准答案:C
10.以下保留字( )不能出现在说明虚函数原型的语句中。
A. static
B. operator
C. void
D. const
标准答案:A
11.下面函数的功能是( )。 void fun(char s1[ ], char s2[ ]) { while(s2++=s1++); }(
A. 字符串比较
B. 字符串复制
C. 字符串连接
D. 字符串反向
标准答案:B
12.作用域运算符的功能是( )
A. 给定作用域的大小
B. 表示作用域的级别的
C. 某个成员是属于哪个类的
D. 指出作用域的范围的
标准答案:C
13.以下错误的描述是( )。 函数调用可以
A. 出现在一个表达式中
B. 出现在执行语句中
C. 作为一个函数的实参
D. 作为一个函数的形参
标准答案:D
14.有如下类声明: class MyBASE{ int k; public: void set(int n){ k=n;} int get( )const{ return k; } }; class MyDERIVED: protected MyBASE{ protected: int j; public: void set(int m, int n){MyBASE::set(m); j=n;} int get( )const{ return MyBASE::get( )+j; } }; 则类MyDERIVE
A. 4
B. 3
C. 2
D. 1
标准答案:B
15.下列关于类和对象的叙述中,错误的是( )
A. 一个类只能有一个对象
B. 对象是类的具体实例
C. 类是对某一类对象的抽象
D. 类和对象的关系是一种数据类型与变量的关系
标准答案:A
16.下列字符列中,可作为C++语言程序自定义标识符是( )
A. switch
B. file
C. break
D. do
标准答案:B
17.下列关于派生类可访问它基类成员的描述中,错误的是( )。
A. 派生类可访问它基类中的成员与继承方式有关
B. 派生类不可访问它基类中的私有成员
C. 公有继承方式下,派生类可访问它基类的私有成员
D. 私有继承方式下,派生类可访问它基类中的公有成员和保护成员
标准答案:C
18.若用数组名作为函数调用时的实参,则实际上传递给形参的是( )
A. 数组首地址
B. 数组的第一个元素值
C. 数组中全部元素的值
D. 数组元素的个数
标准答案:A
19.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: ( )
A. AB operator+(AB & a , AB & b)
B. AB operator+(AB & a)
C. operator+(AB a)
D. AB & operator+( )
标准答案:B
20.以下不属于类访问权限的是( )
A. public
B. static
C. protected
D. private
标准答案:B
21.在以下说明中,标识符ptr( )。 int (*ptr);
A. 说明不合法
B. 是一个指针数组名,每个元素是一个指向整数变量的指针
C. 是一个指针数组名,每个元素是一个指向整数变量的指针
D. 是一个指向整型变量的指针
标准答案:C
22.已知枚举类型定义语句为: enum Token { NAME, NUMBER, PLUS = 5, MINUS, PRINT = 10 }; 则下列叙述中错误的是( )(
A. 枚举常量NAME的值为1
B. 枚举常量NUMBER的值为1
C. 枚举常量MINUS的值为6
D. 枚举常量PRINT的值为10
标准答案:A
23.用关键字( )标记的函数被称为虚函数。
A. virtual
B. private
C. public
D. protected
标准答案:A
二、多选题(共 2 道试题,共 5 分。)V 1.下面说法正确的是( )
A. 所有的函数都可以说明为内置函数
B. 具有循环语句、switch语句的函数不能说明为内置函数
C. 使用内置函数,可以加快程序执行的速度,但会增加程序代码的大小
D. 使用内置函数,可以减小程序代码大小,但使程序执行的速度减慢
标准答案:
2.继承是( )的方法。
A. 将特殊的类变成通用的类
B. 把通用的参数传送给特殊的类的对象
C. 将通用的类变成特殊的类
D. 将已有的类添加新的特性,但不重写它们
标准答案:
三、判断题(共 15 道试题,共 37.5 分。)V 1.用new动态申请的内存是在堆中分配的,而不是在栈中分配的。( )
A. 错误
B. 正确
标准答案:
2.类的友元函数可以直接访问该类的所有成员。( )
A. 错误
B. 正确
标准答案:
3.一般对象和指向对象指针的成员函数表示分别是运算符.和->。( )
A. 错误
B. 正确
标准答案:
4.变量必须先定义后赋值。( )
A. 错误
B. 正确
标准答案:
5.在类体内允许对数据成员进行初始化 。( )
A. 错误
B. 正确
标准答案:
6.在类的定义中,引入友元的原因是提高效率。( )
A. 错误
B. 正确
标准答案:
7.静态数据成员函数是属于某个对象的。( )
A. 错误
B. 正确
标准答案:
8.友元类中所有成员函数都是友元函数 。( )
A. 错误
B. 正确
标准答案:
9.在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有多态的特征。( )
A. 错误
B. 正确
标准答案:
10.在私有继承方式下,派生类的对象可访问基类中的公有成员。( )
A. 错误
B. 正确
标准答案:
11.抽象类中只能有一个纯虚函数。( )
A. 错误
B. 正确
标准答案:
12.一个类可以作为另一个类的友元类。( )
A. 错误
B. 正确
标准答案:
13.友元函数说明在类体内它是一种成员函数 。( )
A. 错误
B. 正确
标准答案:
14.派生类不能作为基类派生出新类。( )
A. 错误
B. 正确
标准答案:
15.成员函数中调用的虚函数可能实现动态联编。( )
A. 错误
B. 正确
标准答案:
一、单选题(共 23 道试题,共 57.5 分。)V 1.已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是( )
A. 这是运算符-的重载运算符函数
B. 这个函数所重载的运算符是一个一元运算符
C. 这是一个成员函数
D. 这个函数不改变类的任何数据成员的值
标准答案:
2.有如下程序: #include using namespace std; class A { public: A( ) { cout << "A"; } }; class B { public: B( ) { cout << "B"; } }; class C : public A { B b; public: C( ) { cout << "C"; } }; int main( ) { C obj; return 0; } 执行后的输出结果是( )
A. CBA
B. BAC
C. ACB
D. ABC
标准答案:
3.在下面的一维数组定义中,哪一个有语法错误。( )
A. int a[ ]={1,2,3}
B. int a={0}
C. int a[ ]
D. int a
标准答案:
4.下列描述中,成员函数中包括( )的类肯定是抽象类
A. virtual double Area();
B. virtual double Area()=0;
C. virtual double Area(void){}
D. double Area(void)=0;
标准答案:
5.for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是()
A. 0
B. 5
C. 6
D. 无数次
标准答案:
6.在声明类时 ,下面说法正确的是( )。
A. 可以在类的声明中给数据成员赋初值
B. 数据成员的数据类型可以是register
C. private,public,proected 可以按任意的顺序出现
D. 没有用private,public,proected定义的数据成员是共有成员
标准答案:
7.用关键字( )标记的函数被称为虚函数。
A. virtual
B. private
C. public
D. protected
标准答案:
8.下面的哪个保留字不能作为函数的返回类型( )。
A. void
B. int
C. new
D. long
标准答案:
9.结构化程序设计所规定的三种基本控制结构是 ( )
A. 输入、处理、输出
B. 树形、网形、环形
C. 顺序、选择、循环
D. 主程序、子程序、函数
标准答案:
10.以下不属于类访问权限的是( )
A. public
B. static
C. protected
D. private
标准答案:
11.若用数组名作为函数调用时的实参,则实际上传递给形参的是( )
A. 数组首地址
B. 数组的第一个元素值
C. 数组中全部元素的值
D. 数组元素的个数
标准答案:
12.以下错误的描述是( )。 函数调用可以
A. 出现在一个表达式中
B. 出现在执行语句中
C. 作为一个函数的实参
D. 作为一个函数的形参
标准答案:
13.下列对模板的声明中,正确的是( )。
A. template<A,B>
B. template<class A,B>
C. template<typename A,typename B>
D. template<class A;class B>
标准答案:
14.下面有关重载函数的说法中正确的是( )
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
标准答案:
15.文件操作中,打开文件的访问模式常量中,( )是以追加方式打开文件的。
A. ios::in
B. ios::out
C. ios::binary
D. ios::ate
标准答案:
16.下列关于this指针的叙述中,正确的是( )
A. 任何与类相关的函数都有this指针
B. 类的成员函数都有this指针
C. 类的友元函数都有this指针
D. 类的非静态成员函数才有this指针
标准答案:
17.下面关于派生类的描述中,( )是错的。
A. 一个派生类可以作为另一个派生类的基类
B. 派生类至少有一个基类
C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员
D. 派生类中继承的基类成员的访问权限到派生类保持不变
标准答案:
18.使用如setfill()的操作符对数据进行格式输出时,应包含( )头文件。
A. iostream
B. fstream
C. iomanip
D. stdlib
标准答案:
19.下面关于析构函数特征的描述正确的是( )。
A. 一个类中可以定义多个析构函数
B. 析构函数名与类名相同
C. 析构函数不能指定返回类型
D. 析构函数可以有一个或多个参数
标准答案:
20.C++语言的跳转语句中,对于break和continue说法正确的是( )
A. break语句只应用于循环体中
B. continue语句只应用于循环体中
C. break是无条件跳转语句,continue不是
D. break和continue的跳转范围不够明确,容易产生问题
标准答案:
21.下列字符列中,可作为C++语言程序自定义标识符是( )
A. switch
B. file
C. break
D. do
标准答案:
22.下面关于C++流的叙述中,正确的是( )
A. cin是一个输入流对象
B. 可以用ifstream定义一个输出流对象
C. 执行语句序列char *y="PQMN"; cout<
D. 执行语句序列char x; cin.getline(x,80); 时,若键入 Happy new year 则x中的字符串是"Happy"
标准答案:
23.面向对象系统不具有( )特性
A. 继承性
B. 封装性
C. 过程性
D. 多态性
标准答案:
二、多选题(共 2 道试题,共 5 分。)V
1.下列函数中,可以作为虚函数的是( )。
A. 普通函数
B. 非静态成员函数
C. 构造函数
D. 析构函数
标准答案:
2.下面说法正确的是( )
A. 所有的函数都可以说明为内置函数
B. 具有循环语句、switch语句的函数不能说明为内置函数
C. 使用内置函数,可以加快程序执行的速度,但会增加程序代码的大小
D. 使用内置函数,可以减小程序代码大小,但使程序执行的速度减慢
标准答案:
一、单选题(共 23 道试题,共 57.5 分。)V
1.已知枚举类型定义语句为: enum Token { NAME, NUMBER, PLUS = 5, MINUS, PRINT = 10 }; 则下列叙述中错误的是( )(
A. 枚举常量NAME的值为1
B. 枚举常量NUMBER的值为1
C. 枚举常量MINUS的值为6
D. 枚举常量PRINT的值为10
标准答案:
2.在下列函数原型中,可以作为类AA构造函数的是( )
A. void AA(int);
B. int AA( );
C. AA(int)const;
D. AA(int);
标准答案:
3.下面关于析构函数特征的描述正确的是( )。
A. 一个类中可以定义多个析构函数
B. 析构函数名与类名相同
C. 析构函数不能指定返回类型
D. 析构函数可以有一个或多个参数
标准答案:
4.下面的哪个保留字不能作为函数的返回类型( )。
A. void
B. int
C. new
D. long
标准答案:
5.下列关于运算符重载的叙述中,正确的是( )
A. 通过运算符重载,可以定义新的运算符
B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+
D. 重载一个二元运算符时,必须声明两个形参
标准答案:
6.下列运算符中,不能被重载的是( )。
A. 【】
B. .
C. ()
D. /
标准答案:
7.有关运算符重载正确的描述是( )。
A. C++语言允许重载运算符时改变运算符的操作个数
B. C++语言允许重载运算符时改变运算符的优先级
C. C++语言允许重载运算符时改变运算符的结合性
D. C++语言允许重载运算符时改变运算符原来的功能
标准答案:
8.下列不是C++流对象的是( )。
A. cout
B. cin
C. cerr
D. ostream
标准答案:
9.通常拷贝构造函数的参数是()
A. 某个对象名
B. 某个对象的成员名
C. 某个对象的引用名
D. 某个对象的指针名
标准答案:
10.使用如setfill()的操作符对数据进行格式输出时,应包含( )头文件。
A. iostream
B. fstream
C. iomanip
D. stdlib
标准答案:
11.下面有关重载函数的说法中正确的是( )
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
标准答案:
12.有如下函数模板定义: template T func(T x, T y) { return x*x+y*y; } 在下列对func的调用中,错误的是( )
A. func(3, 5);
B. func(3.0, 5.5);
C. func (3, 5.5);
D. func(3, 5.5);
标准答案:
13.对于包括()类型数据成员的用户定义类型必须定义其析构函数
A. static
B. 指针类型
C. 字符串
D. 字符型
标准答案:
14.下列关于类和对象的叙述中,错误的是( )
A. 一个类只能有一个对象
B. 对象是类的具体实例
C. 类是对某一类对象的抽象
D. 类和对象的关系是一种数据类型与变量的关系
标准答案:
15.for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是()
A. 0
B. 5
C. 6
D. 无数次
标准答案:
16.在声明类时 ,下面说法正确的是( )。
A. 可以在类的声明中给数据成员赋初值
B. 数据成员的数据类型可以是register
C. private,public,proected 可以按任意的顺序出现
D. 没有用private,public,proected定义的数据成员是共有成员
标准答案:
17.下列描述中,成员函数中包括( )的类肯定是抽象类
A. virtual double Area();
B. virtual double Area()=0;
C. virtual double Area(void){}
D. double Area(void)=0;
标准答案:
18.执行语句序列 int i=0; while(i<25) i+=3; cou<<i; 输出结果是/( )
A. 24
B. 25
C. 27
D. 28
标准答案:
19.在每个C++程序中都必须包含有这样一个函数,该函数的函数名( )。
A. main
B. MAIN
C. name
D. function
标准答案:
20.结构化程序设计所规定的三种基本控制结构是 ( )
A. 输入、处理、输出
B. 树形、网形、环形
C. 顺序、选择、循环
D. 主程序、子程序、函数
标准答案:
21.下面函数的功能是( )。 void fun(char s1[ ], char s2[ ]) { while(s2++=s1++); }(
A. 字符串比较
B. 字符串复制
C. 字符串连接
D. 字符串反向
标准答案:
22.下列关于C++函数的说明中,正确的是( )
A. 内联函数就是定义在另一个函数体内部的函数
B. 函数体的最后一条语句必须是return语句
C. 标准C++要求在调用一个函数之前,必须先声明其原型
D. 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
标准答案:
23.设x和y均为bool量,则x || y为假的条件是( )。
A. 它们均为真
B. 其中一个为真
C. 它们均为假
D. 其中一个为假
标准答案:
二、多选题(共 2 道试题,共 5 分。)V 1.下面说法正确的是( )
A. 所有的函数都可以说明为内置函数
B. 具有循环语句、switch语句的函数不能说明为内置函数
C. 使用内置函数,可以加快程序执行的速度,但会增加程序代码的大小
D. 使用内置函数,可以减小程序代码大小,但使程序执行的速度减慢
标准答案:
2.下列函数中,可以作为虚函数的是( )。
A. 普通函数
B. 非静态成员函数
C. 构造函数
D. 析构函数
标准答案:
三、判断题(共 15 道试题,共 37.5 分。)V
1.一个类可以作为另一个类的友元类。( )
A. 错误
B. 正确
标准答案:
2.构造函数的定义必须在类体内 。( )
A. 错误
B. 正确
标准答案:
3.用new动态申请的内存是在堆中分配的,而不是在栈中分配的。( )
A. 错误
B. 正确
标准答案:
4.使用const说明常量时,可以不必指出类型.( )
A. 错误
B. 正确
标准答案:
5.在C++语言中,类是支持数据封装的工具。( )
A. 错误
B. 正确
标准答案:
6.友元函数说明在类体内它是一种成员函数 。( )
A. 错误
B. 正确
标准答案:
7.类的友元函数可以直接访问该类的所有成员。( )
A. 错误
B. 正确
标准答案:
8.变量必须先定义后赋值。( )
A. 错误
B. 正确
标准答案:
9.抽象类中只能有一个纯虚函数。( )
A. 错误
B. 正确
标准答案:
10.虚函数不能是类的静态成员。( )
A. 错误
B. 正确
标准答案:
11.在类的定义中,引入友元的原因是提高效率。( )
A. 错误
B. 正确
标准答案:
12.子对象的初始化在其构造函数的成员初始化列表中实现。( )
A. 错误
B. 正确
标准答案:
13.一般对象和指向对象指针的成员函数表示分别是运算符.和->。( )
A. 错误
B. 正确
标准答案:
14.在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有多态的特征。( )
A. 错误
B. 正确
标准答案:A
15.派生类的成员函数可以直接访问基类的所有成员。( )
A. 错误
B. 正确
标准答案:
一、单选题(共 23 道试题,共 57.5 分。)V
1.下面( )不是构造函数的特征。
A. 构造函数可以重载
B. 构造函数可以设置缺省参数
C. 构造函数的函数名和类名相同
D. 构造函数必须指定返回值类型
标准答案:
2.for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是()
A. 0
B. 5
C. 6
D. 无数次
标准答案:
3.以下错误的描述是( )。 函数调用可以
A. 出现在一个表达式中
B. 出现在执行语句中
C. 作为一个函数的实参
D. 作为一个函数的形参
标准答案:
4.面向对象系统不具有( )特性
A. 继承性
B. 封装性
C. 过程性
D. 多态性
标准答案:
5.以下保留字( )不能出现在说明虚函数原型的语句中。
A. static
B. operator
C. void
D. const
标准答案:
6.下面函数的功能是( )。 void fun(char s1[ ], char s2[ ]) { while(s2++=s1++); }(
A. 字符串比较
B. 字符串复制
C. 字符串连接
D. 字符串反向
标准答案:
7.下面有关重载函数的说法中正确的是( )
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
标准答案:
8.有如下函数模板定义: template T func(T x, T y) { return x*x+y*y; } 在下列对func的调用中,错误的是( )
A. func(3, 5);
B. func(3.0, 5.5);
C. func (3, 5.5);
D. func(3, 5.5);
标准答案:
9.下列不是C++流对象的是( )。
A. cout
B. cin
C. cerr
D. ostream
标准答案:
10.下列函数中,( )是对文件进行读操作的。
A. read()
B. write()
C. tellg()
D. seekp()
标准答案:
11.以下不属于类访问权限的是( )
A. public
B. static
C. protected
D. private
标准答案:
12.下列字符列中,可作为C++语言程序自定义标识符是( )
A. switch
B. file
C. break
D. do
标准答案:
13.在进行任何的C++流操作后,都可以用C++流的有关成员函数检测流的状态,用来检测是否到达文件的末尾函数是( )。
A. fail()
B. eof()
C. bad()
D. good()
标准答案:
14.下列关于C++函数的说明中,正确的是( )
A. 内联函数就是定义在另一个函数体内部的函数
B. 函数体的最后一条语句必须是return语句
C. 标准C++要求在调用一个函数之前,必须先声明其原型
D. 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
标准答案:
15.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在 函数原型或函数头的前面。
A. in
B. inline
C. inLine
D. InLiner
标准答案:
16.下列关于运算符重载的叙述中,正确的是( )
A. 通过运算符重载,可以定义新的运算符
B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+
D. 重载一个二元运算符时,必须声明两个形参
标准答案:
17.有如下程序: #include using namespace std; class Test { public: Test( ) { n+=2; } ~Test( ) { n-=3; } static int getNum( ) { return n; } private: static int n; }; int Test::n = 1; int main( ) { Test* p = new Test; delete p; cout << "n=" << Test::getNum( ) << end
A. n=0
B. n=1
C. n=2
D. n=3
标准答案:
18.有如下类声明: class Foo { int bar; }; 则Foo类的成员bar是( )
A. 公有数据成员
B. 公有成员函数
C. 私有数据成员
D. 私有成员函数
标准答案:
19.已知枚举类型定义语句为: enum Token { NAME, NUMBER, PLUS = 5, MINUS, PRINT = 10 }; 则下列叙述中错误的是( )(
A. 枚举常量NAME的值为1
B. 枚举常量NUMBER的值为1
C. 枚举常量MINUS的值为6
D. 枚举常量PRINT的值为10
标准答案:
20.下列不合法的变量名为( )
A. int
B. int1
C. name_1
D. name0
标准答案:
21.假定AB为一个类,则执行“AB a(4) , b , * p ;”语句时,自动调用该类构造函数的次数为( )。
A. 3
B. 4
C. 6
D. 9
标准答案:
22.结构化程序设计所规定的三种基本控制结构是 ( )
A. 输入、处理、输出
B. 树形、网形、环形
C. 顺序、选择、循环
D. 主程序、子程序、函数
标准答案:
23.通常拷贝构造函数的参数是()
A. 某个对象名
B. 某个对象的成员名
C. 某个对象的引用名
D. 某个对象的指针名
标准答案:
二、多选题(共 2 道试题,共 5 分。)V
1.下面说法正确的是( )
A. 所有的函数都可以说明为内置函数
B. 具有循环语句、switch语句的函数不能说明为内置函数
C. 使用内置函数,可以加快程序执行的速度,但会增加程序代码的大小
D. 使用内置函数,可以减小程序代码大小,但使程序执行的速度减慢
标准答案:
2.下列函数中,可以作为虚函数的是( )。
A. 普通函数
B. 非静态成员函数
C. 构造函数
D. 析构函数
标准答案:
三、判断题(共 15 道试题,共 37.5 分。)V
1.在派生过程中,派生类吸收包括构造函数和析构函数在内的所有基类成员。( )
A. 错误
B. 正确
标准答案:
2.派生类的成员函数可以直接访问基类的所有成员。( )
A. 错误
B. 正确
标准答案:
3.抽象类中只能有一个纯虚函数。( )
A. 错误
B. 正确
标准答案:
4.作为模板类型参数的关键字class,特别含义是“任何用户定义类的类型”。( )
A. 错误
B. 正确
标准答案:
5.抽象类只能用作其他类的基类。( )
A. 错误
B. 正确
标准答案:
6.多重继承中,派生类构造函数对其基类构造函数的执行顺序取决于它成员函数初始化表中说明的基类顺序。( )
A. 错误
B. 正确
标准答案:
7.派生类不能作为基类派生出新类。( )
A. 错误
B. 正确
标准答案:
8.使用const说明常量时,可以不必指出类型.( )
A. 错误
B. 正确
标准答案:
9.变量必须先定义后赋值。( )
A. 错误
B. 正确
标准答案:
10.静态数据成员的值是不能改变的 。( )
A. 错误
B. 正确
标准答案:
11.在C++语言中,类是支持数据封装的工具。( )
A. 错误
B. 正确
标准答案:
12.虚函数不能是类的静态成员。( )
A. 错误
B. 正确
标准答案:
13.一个类可以作为另一个类的友元类。( )
A. 错误
B. 正确
标准答案:
14.纯虚函数是一种不给出具体实现的虚函数。( )
A. 错误
B. 正确
标准答案:
15.类的友元函数可以直接访问该类的所有成员。( )
A. 错误
B. 正确
标准答案:
一、单选题(共 23 道试题,共 57.5 分。)V
1.以下保留字( )不能出现在说明虚函数原型的语句中。
A. static
B. operator
C. void
D. const
标准答案:
2.有如下函数模板定义: template T func(T x, T y) { return x*x+y*y; } 在下列对func的调用中,错误的是( )
A. func(3, 5);
B. func(3.0, 5.5);
C. func (3, 5.5);
D. func(3, 5.5);
标准答案:
3.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: ( )
A. AB operator+(AB & a , AB & b)
B. AB operator+(AB & a)
C. operator+(AB a)
D. AB & operator+( )
标准答案:
4.关于虚函数的描述中,正确的是()
A. 虚函数是一个static类型的成员函数
B. 虚函数是一个非成员函数
C. 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数
D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型
标准答案:
5.文件操作中,打开文件的访问模式常量中,( )是以追加方式打开文件的。
A. ios::in
B. ios::out
C. ios::binary
D. ios::ate
标准答案:
6.设x和y均为bool量,则x&&y为真的条件是 ( )
A. 它们均为真
B. 其中一个为真
C. 它们均为假
D. 其中一个为假
标准答案:
7.C++语言的跳转语句中,对于break和continue说法正确的是( )
A. break语句只应用于循环体中
B. continue语句只应用于循环体中
C. break是无条件跳转语句,continue不是
D. break和continue的跳转范围不够明确,容易产生问题
标准答案:
8.以下错误的描述是( )。 函数调用可以
A. 出现在一个表达式中
B. 出现在执行语句中
C. 作为一个函数的实参
D. 作为一个函数的形参
标准答案:
9.下列关于运算符重载的叙述中,正确的是( )
A. 通过运算符重载,可以定义新的运算符
B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+
D. 重载一个二元运算符时,必须声明两个形参
标准答案:
10.下面关于派生类的描述中,( )是错的。
A. 一个派生类可以作为另一个派生类的基类
B. 派生类至少有一个基类
C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员
D. 派生类中继承的基类成员的访问权限到派生类保持不变
标准答案:
11.下列有关类的说法不正确的是( )。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类
C. 一个类只能有一个对象
D. 类与对象的关系和数据类型与变量的关系相似
标准答案:
12.下列静态数据成员的特性中,错误的是( )
A. 说明静态数据成员前边加static
B. 静态数据成员要在类体外初始化
C. 引用静态数据成员时,要在静态数据成员前加和作用域运算符
D. 静态数据成员不是一个类所有对象共享的
标准答案:
13.下列描述中,成员函数中包括( )的类肯定是抽象类
A. virtual double Area();
B. virtual double Area()=0;
C. virtual double Area(void){}
D. double Area(void)=0;
标准答案:
14.若用数组名作为函数调用时的实参,则实际上传递给形参的是( )
A. 数组首地址
B. 数组的第一个元素值
C. 数组中全部元素的值
D. 数组元素的个数
标准答案:
15.下列关于派生类可访问它基类成员的描述中,错误的是( )。
A. 派生类可访问它基类中的成员与继承方式有关
B. 派生类不可访问它基类中的私有成员
C. 公有继承方式下,派生类可访问它基类的私有成员
D. 私有继承方式下,派生类可访问它基类中的公有成员和保护成员
标准答案:
16.for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是()
A. 0
B. 5
C. 6
D. 无数次
标准答案:
17.下列关于类和对象的叙述中,错误的是( )
A. 一个类只能有一个对象
B. 对象是类的具体实例
C. 类是对某一类对象的抽象
D. 类和对象的关系是一种数据类型与变量的关系
标准答案:
18.下面函数的功能是( )。 void fun(char s1[ ], char s2[ ]) { while(s2++=s1++); }(
A. 字符串比较
B. 字符串复制
C. 字符串连接
D. 字符串反向
标准答案:
19.要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是( )
A. int vect[ ]={30,50,-88};
B. int vect[ ]={30,50,-88,0,0};
C. int vect={30,50,-88};
D. int vect={30,50,-88,0,0};
标准答案:
20.假定a为一个整型数组名,则元素a的字节地址为 ( )。
A. a+4
B. a+8
C. a+16
D. a+32
标准答案:
21.对于包括()类型数据成员的用户定义类型必须定义其析构函数
A. static
B. 指针类型
C. 字符串
D. 字符型
标准答案:
22.下列函数中,( )是对文件进行读操作的。
A. read()
B. write()
C. tellg()
D. seekp()
标准答案:
23.下列不是C++流对象的是( )。
A. cout
B. cin
C. cerr
D. ostream
标准答案:
二、多选题(共 2 道试题,共 5 分。)V 1.下列函数中,可以作为虚函数的是( )。
A. 普通函数
B. 非静态成员函数
C. 构造函数
D. 析构函数
标准答案:
2.下面说法正确的是( )
A. 将数据结构和算法置于同一个函数内,即为数据封装
B. 一个类通过集成可以获得另一个类的特征
C. 面向对象要求程序员集中于事物的本质特征,用抽象的观点看待程序
D. 同一消息为不同的对象接受时,产生的行为是一样的,这称为一致性
标准答案:
页:
[1]