【期末高分题集】[北京交通大学]《面向对象程序设计》考核必备86

奥鹏期末考核

77649–《面向对象程序设计》2022年北京交通大学期末复习题集

单选题:
(1)要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是( )
A.int vect[ ]={30,50,-88};
B.int vect[ ]={30,50,-88,0,0};
C.int vect[5]={30,50,-88};
D.int vect[5]={30,50,-88,0,0};
答案问询微信:424329

(2)假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为( )。
A.3
B.4
C.6
D.9
答案问询微信:424329

(3)下面有关重载函数的说法中正确的是( )
A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同
答案问询微信:424329

(4)下面关于析构函数特征的描述正确的是( )。
A.一个类中可以定义多个析构函数
B.析构函数名与类名相同
C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
答案问询微信:424329

(5)面向对象系统不具有( )特性
A.继承性
B.封装性
C.过程性
D.多态性
答案问询微信:424329

(6)下列静态数据成员的特性中,错误的是( )
A.说明静态数据成员前边加static
B.静态数据成员要在类体外初始化
C.引用静态数据成员时,要在静态数据成员前加和作用域运算符
D.静态数据成员不是一个类所有对象共享的
答案问询微信:424329

(7)对于包括()类型数据成员的用户定义类型必须定义其析构函数
A.static
B.指针类型
C.字符串
D.字符型
答案问询微信:424329

(8)下列字符列中,可作为C++语言程序自定义标识符是( )
A.switch
B.file
C.break
D.do
答案问询微信:424329

(9)下列关于C++函数的说明中,正确的是( )
A.内联函数就是定义在另一个函数体内部的函数
B.函数体的最后一条语句必须是return语句
C.标准C++要求在调用一个函数之前,必须先声明其原型
D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
答案问询微信:424329

(10)使用如setfill()的操作符对数据进行格式输出时,应包含( )头文件。
A.iostream
B.fstream
C.iomanip
D.stdlib
答案问询微信:424329

(11)以下错误的描述是( )。 函数调用可以
A.出现在一个表达式中
B.出现在执行语句中
C.作为一个函数的实参
D.作为一个函数的形参
答案问询微信:424329

(12)有如下程序: #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
答案问询微信:424329

(13)下面关于C++流的叙述中,正确的是( )
A.cin是一个输入流对象
B.可以用ifstream定义一个输出流对象
C.执行语句序列char *y="PQMN"; cout
D.执行语句序列char x[80]; cin.getline(x,80); 时,若键入 Happy new year 则x中的字符串是"Happy"
答案问询微信:424329

(14)下列关于类和对象的叙述中,错误的是( )
A.一个类只能有一个对象
B.对象是类的具体实例
C.类是对某一类对象的抽象
D.类和对象的关系是一种数据类型与变量的关系
答案问询微信:424329

(15)已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是( )
A.这是运算符-的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变类的任何数据成员的值
答案问询微信:424329

(16)已知枚举类型定义语句为: enum Token { NAME, NUMBER, PLUS = 5, MINUS, PRINT = 10 }; 则下列叙述中错误的是( )(
A.枚举常量NAME的值为1
B.枚举常量NUMBER的值为1
C.枚举常量MINUS的值为6
D.枚举常量PRINT的值为10
答案问询微信:424329

(17)在每个C++程序中都必须包含有这样一个函数,该函数的函数名( )。
A.main
B.MAIN
C.name
D.function
答案问询微信:424329

(18)若一个类中含有纯虚函数,则该类称为( )。
A.基类
B.虚基类
C.抽象类
D.派生类
答案问询微信:424329

(19)用关键字( )标记的函数被称为虚函数。
A.virtual
B.private
C.public
D.protected
答案问询微信:424329

(20)有关运算符重载正确的描述是( )。
A.C++语言允许重载运算符时改变运算符的操作个数
B.C++语言允许重载运算符时改变运算符的优先级
C.C++语言允许重载运算符时改变运算符的结合性
D.C++语言允许重载运算符时改变运算符原来的功能
答案问询微信:424329

(21)下列描述中,成员函数中包括( )的类肯定是抽象类
A.virtual double Area();
B.virtual double Area()=0;
C.virtual double Area(void){}
D.double Area(void)=0;
答案问询微信:424329

(22)以下保留字( )不能出现在说明虚函数原型的语句中。
A.static
B.operator
C.void
D.const
答案问询微信:424329

(23)在声明类时 ,下面说法正确的是( )。
A.可以在类的声明中给数据成员赋初值
B.数据成员的数据类型可以是register
C.private,public,proected 可以按任意的顺序出现
D.没有用private,public,proected定义的数据成员是共有成员
答案问询微信:424329

(24)下面的哪个保留字不能作为函数的返回类型? ( )
A.void
B.int
C.new
D.long
答案问询微信:424329

(25)文件操作中,打开文件的访问模式常量中,( )是以追加方式打开文件的。
A.ios::in
B.ios::out
C.ios::binary
D.ios::ate
答案问询微信:424329

(26)有如下类声明: class Foo { int bar; }; 则Foo类的成员bar是( )
A.公有数据成员
B.公有成员函数
C.私有数据成员
D.私有成员函数
答案问询微信:424329

(27)下面关于派生类的描述中,( )是错的。
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
答案问询微信:424329

(28)下面( )不是构造函数的特征。
A.构造函数可以重载
B.构造函数可以设置缺省参数
C.构造函数的函数名和类名相同
D.构造函数必须指定返回值类型
答案问询微信:424329

(29)结构化程序设计所规定的三种基本控制结构是 ( )
A.输入、处理、输出
B.树形、网形、环形
C.顺序、选择、循环
D.主程序、子程序、函数
答案问询微信:424329

(30)以下不属于类访问权限的是( )
A.public
B.static
C.protected
D.private
答案问询微信:424329

(31)若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在 函数原型或函数头的前面。
A.in
B.inline
C.inLine
D.InLiner
答案问询微信:424329

(32)下列对模板的声明中,正确的是( )。
A.templateA,B
B.templateclass A,B
C.templatetypename A,typename B
D.templateclass A;class B
答案问询微信:424329

(33)下列关于运算符重载的叙述中,正确的是( )
A.通过运算符重载,可以定义新的运算符
B.有的运算符只能作为成员函数重载
C.若重载运算符+,则相应的运算符函数名是+
D.重载一个二元运算符时,必须声明两个形参
答案问询微信:424329

(34)下面函数的功能是( )。 void fun(char s1[ ], char s2[ ]) { while(s2++=s1++); }(
A.字符串比较
B.字符串复制
C.字符串连接
D.字符串反向
答案问询微信:424329

(35)作用域运算符的功能是( )
A.给定作用域的大小
B.表示作用域的级别的
C.某个成员是属于哪个类的
D.指出作用域的范围的
答案问询微信:424329

(36)在下列函数原型中,可以作为类AA构造函数的是( )
A.void AA(int);
B.int AA( );
C.AA(int)const;
D.AA(int);
答案问询微信:424329

(37)下列有关类的说法不正确的是( )。
A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象
D.类与对象的关系和数据类型与变量的关系相似
答案问询微信:424329

(38)在以下关于C++语言的注释的叙述中,不正确的是( )
A.C++程序中,注释可用“/*”、“*/”形式表示,也可用“//”形式表示
B.C++编译器在编译一个程序时,将跳过注释,不对其进行处理
C.C++编译器在编译一个程序时,可发现注释中的单词拼写错误
D.程序中注释的多少不会影响所生成的可执行文件的长度
答案问询微信:424329

(39)下列的各函数中,( )不是类的成员函数。
A.构造函数
B.析构函数
C.拷贝初始化构造函数
D.友元函数
答案问询微信:424329

(40)在以下说明中,标识符ptr( )。 int (*ptr)[3];
A.说明不合法
B.是一个指针数组名,每个元素是一个指向整数变量的指针
C.是一个指针数组名,每个元素是一个指向整数变量的指针
D.是一个指向整型变量的指针
答案问询微信:424329

(41)在下面的一维数组定义中,哪一个有语法错误。( )
A.int a[ ]={1,2,3}
B.int a[10]={0}
C.int a[ ]
D.int a[5]
答案问询微信:424329

(42)for(int x=0,y=0;!x=5;y++)语句执行循环的次数是()
A.0
B.5
C.6
D.无数次
答案问询微信:424329

(43)执行语句序列 int i=0; while(i25) i+=3; coui; 输出结果是/( )
A.24
B.25
C.27
D.28
答案问询微信:424329

(44)通常拷贝构造函数的参数是()
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
答案问询微信:424329

(45)下列不是C++流对象的是( )。
A.cout
B.cin
C.cerr
D.ostream
答案问询微信:424329

(46)下列不合法的变量名为( )
A.int
B.int1
C.name_1
D.name0
答案问询微信:424329

(47)下列函数中,( )是对文件进行读操作的。
A.read()
B.write()
C.tellg()
D.seekp()
答案问询微信:424329

(48)下列关于模板的叙述中,错误的是( )
A.模板声明中的第一个符号总是关键字template
B.在模板声明中用 和 括起来的部分是模板的形参表
C.类模板不能有数据成员
D.在一定条件下函数模板的实参可以省略
答案问询微信:424329

(49)C++语言的跳转语句中,对于break和continue说法正确的是( )
A.break语句只应用于循环体中
B.continue语句只应用于循环体中
C.break是无条件跳转语句,continue不是
D.break和continue的跳转范围不够明确,容易产生问题
答案问询微信:424329

(50)在进行任何的C++流操作后,都可以用C++流的有关成员函数检测流的状态,用来检测是否到达文件的末尾函数是( )。
A.fail()
B.eof()
C.bad()
D.good()
答案问询微信:424329

(51)下列关于派生类可访问它基类成员的描述中,错误的是( )。
A.派生类可访问它基类中的成员与继承方式有关
B.派生类不可访问它基类中的私有成员
C.公有继承方式下,派生类可访问它基类的私有成员
D.私有继承方式下,派生类可访问它基类中的公有成员和保护成员
答案问询微信:424329

(52)下列运算符中,不能被重载的是( )。
A.【】
B..
C.()
D./
答案问询微信:424329

(53)有如下类声明: 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
答案问询微信:424329

(54)在对函数进行原型声明时,下列语法成分中,不需要的是( )。
A.函数返回类型
B.函数参数列表
C.函数名
D.函数体
答案问询微信:424329

(55)下列写法正确的是( )。
A.int *p = 15;
B.const int a; a=15;
C.int
D.int b = 15; int* a =
答案问询微信:424329

(56)下面的代码输出的结果是( )。#include iostream #define FUN(X, Y) X*Y int main( ) { int a=3; int b=4; std::coutFUN(++a, b++)?;}
A.12
B.15
C.16
D.20
答案问询微信:424329

(57)定义p并使p指向包含30个整数的数组所使用的定义语句为( )。
A.int *p=new int[30];
B.int *p=new int(30);
C.int *p=new [30];
D.*p=new int[30];
答案问询微信:424329

(58)关于封装,下列说法中不正确的是( )。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
答案问询微信:424329

(59)下列十六进制整型常量的写法中,错误的是( )
A.0xaf
B.0.
C.0X1b
D.0xAE
答案问询微信:424329

(60)在定义类成员时,为产生封装性,则需使用哪个关键字( )
A.public
B.publish
C.protected
D.private
答案问询微信:424329

(61)设函数void swap(int,int)将交换两形参的值,如两整型变量int a=10;int b=15;则执行swap(a,b)后,a、b值分别为( )
A.10,10
B.10,15
C.15,10
D.15,15
答案问询微信:424329

(62)函数默认参数在函数原型中说明,默认参数必须放在参数序列的( )
A.前部
B.中部
C.后部
D.两端
答案问询微信:424329

(63)设存在函数int min(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是( )
A.int m=min(min(15,26),min(15,47));
B.int m=min(15,26,47);
C.int m=min(15,min(47,26));
D.int m =min(min(47,26),16);
答案问询微信:424329

(64)下列函数不能和函数void print(char)构成重载的是( )
A.int print(int);
B.void print(char,char);
C.int print(char);
D.void print(int,int);
答案问询微信:424329

(65)以下关于预处理的说法,错误的是( )
A.预处理在编译前进行
B.预处理指令需要分号结尾
C.每条预处理指令必须单独占用一行
D.预处理指令可以出现在程序的任何位置
答案问询微信:424329

多选题:
(1)下面说法正确的是( )
A.将数据结构和算法置于同一个函数内,即为数据封装
B.一个类通过集成可以获得另一个类的特征
C.面向对象要求程序员集中于事物的本质特征,用抽象的观点看待程序
D.同一消息为不同的对象接受时,产生的行为是一样的,这称为一致性
答案问询微信:424329

(2)继承是( )的方法。
A.将特殊的类变成通用的类
B.把通用的参数传送给特殊的类的对象
C.将通用的类变成特殊的类
D.将已有的类添加新的特性,但不重写它们
答案问询微信:424329

(3)下列函数中,可以作为虚函数的是( )。
A.普通函数
B.非静态成员函数
C.构造函数
D.析构函数
答案问询微信:424329

判断题:
(1)抽象类中只能有一个纯虚函数。( )
答案问询微信:424329

(2)静态数据成员函数是属于某个对象的。( )
答案问询微信:424329

(3)纯虚函数是一种不给出具体实现的虚函数。( )
答案问询微信:424329

(4)友元函数说明在类体内它是一种成员函数 。( )
答案问询微信:424329

(5)友元类中所有成员函数都是友元函数 。( )
答案问询微信:424329

(6)使用const说明常量时,可以不必指出类型.( )
答案问询微信:424329

(7)虚函数不能是类的静态成员。( )
答案问询微信:424329

(8)构造函数的定义必须在类体内 。( )
答案问询微奥鹏期末考核信:424329

(9)变量必须先定义后赋值。( )
答案问询微信:424329

(10)派生类不能作为基类派生出新类。( )
答案问询微信:424329

(11)抽象类只能用作其他类的基类。( )
答案问询微信:424329

(12)成员函数中调用的虚函数可能实现动态联编。( )
答案问询微信:424329

(13)在类体内允许对数据成员进行初始化 。( )
答案问询微信:424329

(14)作为模板类型参数的关键字class,特别含义是“任何用户定义类的类型”。( )
答案问询微信:424329

(15)在C++语言中,类是支持数据封装的工具。( )
答案问询微信:424329

(16)析构函数是不能重载的 。( )
答案问询微信:424329

(17)一般对象和指向对象指针的成员函数表示分别是运算符.和-。( )
答案问询微信:424329

(18)在私有继承方式下,派生类的对象可访问基类中的公有成员。( )
答案问询微信:424329

(19)派生类的成员函数可以直接访问基类的所有成员。( )
答案问询微信:424329

(20)静态数据成员的值是不能改变的 。( )
答案问询微信:424329

(21)类的友元函数可以直接访问该类的所有成员。( )
答案问询微信:424329

(22)常量不能作为左值使用。( )
答案问询微信:424329

(23)一个类可以作为另一个类的友元类。( )
答案问询微信:424329

(24)用new动态申请的内存是在堆中分配的,而不是在栈中分配的。( )
答案问询微信:424329

(25)在类的定义中,引入友元的原因是提高效率。( )
答案问询微信:424329

(26)多重继承中,派生类构造函数对其基类构造函数的执行顺序取决于它成员函数初始化表中说明的基类顺序。( )
答案问询微信:424329

(27)在派生过程中,派生类吸收包括构造函数和析构函数在内的所有基类成员。( )
答案问询微信:424329

(28)子对象的初始化在其构造函数的成员初始化列表中实现。( )
答案问询微信:424329

(29)所有类型的函数都一定有函数体。 ( )
答案问询微信:424329

(30)对于任意正确定义的类,都可以构造出该类型的对象。 ( )
答案问询微信:424329

(31)当调用函数时,实参是一个数组名,则传递的是该数组的所有数据。( )
答案问询微信:424329

(32)正常情况下new和delete操作符一定是成对出现的。 ( )
答案问询微信:424329

(33)如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。 ( )
答案问询微信:424329

(34)void fun(void) throw(); 声明该函数可以抛出任意类型的异常。( )
答案问询微信:424329

(35)析构函数是一个函数体为空的成员函数。 ( )
答案问询微信:424329

(36)若有定义:doublex[3][5],则x数组列的下标上限是5,下限是1。( )
答案问询微信:424329

(37)在C++中,可以使用关键字struct定义类。 ( )
答案问询微信:424329

(38)用class定义的类中,默认的访问权限是私有的。 ( )
答案问询微信:424329

(39)一个类中必须要有公有成员和私有成员。 ( )
答案问询微信:424329

(40)友元函数说明在类体内,它是一种成员函数。 ( )
答案问询微信:424329

填空题:
(1)从一条函数原型语句“int fun1(void);”可知该函数的返回类型为##。
1、
答案问询微信:424329

(2)##是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。
1、
答案问询微信:424329

(3)C++支持两种多态性,编译时的多态性和##时的多态性。
1、
答案问询微信:424329

(4)假定用户为类AB定义了一个构造函数,“AB(int aa,char *bb=NULL):a(aa),b(bb){}))”,则该类中至少包含有##个数据成员。
1、
答案问询微信:424329

(5)动态多态是指在执行时才能确定使用哪个##函数的方式。
1、
答案问询微信:424329

(6)友员不是类的成员,但是必须在##予以声明。
1、
答案问询微信:424329

(7)若要仿真指针变量P所指向的数据,应使用表达式##。
1、
答案问询微信:424329

(8)面向对象程序设计中的静态多态性由##机制支持。
1、
答案问询微信:424329

(9)有一句只在循环语句或swich语句中使用的流程控制语句,表示该语句的关键字是## 。
1、
答案问询微信:424329

(10)构造函数的特殊性表现在创建对象时会##。
1、
答案问询微信:424329

(11)若n为整型,则表达式n=(float)2/3的值是## 。
1、
答案问询微信:424329

(12)unsigned int定义无符号基本整型 变量,分配##个字节的存储单元。
1、
答案问询微信:424329

编程题:
(12)unsigned int定义无符号基本整型 变量,分配##个字节的存储单元。
1、
答案问询微信:424329

(12)unsigned int定义无符号基本整型 变量,分配##个字节的存储单元。
1、
答案问询微信:424329

(12)unsigned int定义无符号基本整型 变量,分配##个字节的存储单元。
1、
答案问询微信:424329

计算题:
(1)定义一个Date类如下:
答案问询微信:424329

(2)请写出myTextl.txt文本文件中的内容
答案问询微信:424329

(3)给出下面程序的输出结果
答案问询微信:424329

提供优质的教育资源

公众号: 超前自学网