C++期末复习题Word文档下载推荐.docx
《C++期末复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++期末复习题Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。
故本题答案为A。
5)C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是()。
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
6)下列关于运算符重载的叙述中,正确的是()。
A.通过运算符重载,可以定义新的运算符
B.有的运算符只能作为成员函数重载
C.若重载运算符+,则相应的运算符函数名是+
D.重载一个二元运算符时,必须声明两个形参
【答案】B
7)下列关于模板的叙述中,错误的是()。
A.调用模板函数时,在一定条件下可以省略模板实参
B.可以用int、double这样的类型修饰符来声明模板参数
C.模板声明中的关键字class都可以用关键字typename替代
D.模板的形参表中可以有多个参数
【答案】D
8)要利用C++流进行文件操作,必须在程序中包含的头文件是()。
A.iostream
B.fstream
C.strstream
D.iomanip
【答案】B
9)
下列描述中,不属于面向对象思想主要特征的是(
)。
A.封装性
B.跨平台性
C.继承性
D.多态性
【答案】B
10)函数fun的返回值是(
fun(char*a,char*B.
{
int
num=0,n=0;
while(*(a+num)!
=‘\0’)num++;
while(b[n]){*(a+num)=b[n];
num++;
n++;
}
return
num;
A.字符串a的长度
B.字符串b的长度
C.字符串a和b的长度之差
D.字符串a和b的长度之和
11)有如下函数定义:
void
func
(int
a,int&b)
{a++;
b++;
若执行代码段:
x=0
y=1
func(x,y);
则变量x和y值分别是(
A.0和1
B.1和1
C.0和2
D.1和2
12)有如下程序
#include
using
namespace
std;
class
Sample{
public:
Sample(){}
~Sample(){cout<
<
‘*’;
};
main(){
Sample
temp[2],
*pTemp[2];
0;
执行这个程序输出星号(*)的个数为(
A.1
B.2
C.3
D.4
13)下列选项中,与实现运行时多态性无关的是(
A.重载函数
B.虚函数
C.指针
D.引用
【答案】A
14)
对类的构造函数和析构函数描述正确的是(
A.构造函数可以重载,析构函数不能重载
B.构造函数不能重载,析构函数可以重载
C.构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载
15)下面程序的运行结果为(
#include<
iostream.
h>
A
public:
A(int
i){num=i;
A(A
&
A){num=A.
print(){cout<
num<
endl;
main()
a(),b(A);
a.
print();
b.print();
A.11
B.12
C.21
D.22
16)在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是(
A.一元成员运算符
B.二元成员运算符
C.一元友元运算符
D.选项B和选项C都可能
17)下列关于模板的说法正确的是(
A.模板的实参在任何时候都可以省略
B.类模板与模板类所指的是同一概念
C.类模板的参数必须是虚拟类型的
D.类模板中的成员函数全部都是模板函数
18)在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是(
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
19)建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、
c(派生类的构造函数)这3种构造函数的调用顺序为(
A.abc
B.acb
C.cab
D.cba
20)下面关于虚函数的描述,错误的是(
A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
C.虚函数可以是另一个类的友元函数,但不能是静态成员函数
D.基类中说明的纯虚函数在其任何派生类中都必须实现
21)定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为(
A.私有继承
B.非私有继承
C.保护继承
D.公有继承
22)在位运算中,操作数每右移一位,其结果相当于(
A.操作数乘以2
B.操作数除以2
C.操作数乘以4
D.操作数除以4
23)有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。
则不能把节点b连接到节点a
之后的语句是(
struct
node
char
data;
node*next;
}a,b,*p=&
a,*q=&
b;
A.a.
next=q;
B.p.
next=&
C.p->
D.(*p).next=q;
24)在最坏情况下,冒泡排序所需要的比较次数为
A)n/2
B)(n+1)/2
C)n(n-1)/2
D)n(n+1)/2
【答案】C
25)在面向对象方法中,实现信息隐蔽是通过对象的某一特性来实现的,这个特性是
A)封装
B)类
C)对象
D)继承
【答案】A
26)以下关于友元函数的叙述不正确的是
A)友元函数提供了类之间数据共享的一个途径
B)一个友元函数可以访问任何类的任何成员
C)友元函数破坏了数据的封装
D)友元函数增加了程序设计的灵活性
27)在设计程序时,应采纳的原则之一()
A.不限制goto语句的使用B.减少或取消注解行
C.程序越短越好D.程序结构应有助于读者理解
【参考答案】D
28)下面关于类和对象的描述中,错误的是()
A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B.类和对象之间的关系是抽象和具体的关系
C.对象是类的实例,一个对象必须属于一个已知的类
D.类是具有共同行为的若干对象的统一描述体
【参考答案】A
29)设inta=10,b=11,c=12;
,表达式(a+b)<
c&
b==c的值是()
A.2B.0C.-2D.1
【参考答案】B
30)下面关于数组的描述错误的是()
A.在C++语言中数组的名字就是指向该数组第一个元素的指针
B.长度为n的数组,下标的范围是0~n-1
C.数组的大小必须在编译时确定
D.数组只能通过值参数和引用参数两种方式传递给函数
31)下面的哪个选项不能作为函数的返回类型?
()
A.voidB.intC.newD.long
【参考答案】C
32)
以下程序中,错误的行为()
1.#include
2.classA
3.{
4.public:
5.intn=2;
6.A(intval){cout<
val;
}
7.~A(){}
8.{;
9.voidmain()
10{
11.Aa(0);
12.}
A.5B.6C.7D.11
33)如果类A被说明成类B的友元,则()
A.类A的成员即类B的成员B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元
34)下面关于模板的描述,错误的是()
A.函数模板和类模板的参数可以是任意的数据类型
B.类模板不能直接使用,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使用
C.函数模板不能直接使用,需要实例化为模板函数后才使用
D.类模板的成员函数都是函数模板
35)下列程序的运行结果为()
#include
inti=0;
classA{
public:
A(){i++;
};
voidmain()
{Aa,b[3],*c;
c=b;
cout<
i;
A.2B.3C.4D.5
【参考答案】C
36)下列字符串中可以用C++语言标识符的是()
A._1234B.foo~~bar
C.virtuaLD.34var
37)以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是()
{int*p,*q,a,b;
p=&
a;
″inputa:
″;
cin>
>
p;
A.*p表示的是指针变量P的地址
B.p表示的是变量a的地址,而不是变量a的值
C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
38)下列定义中p指向的地址可更改,但*p不能够更改的是