C++经典选择题(一)
01
一个可运行的C++源程序( )。
A. 由一个或多个主函数构成
B. 由一个且仅由一个主函数和零个以上(含零个)的子函数构成
C. 仅由一个主函数构成
D. 由一个且只有一个主函数和多个子函数构成
答案
B
02
C++程序的三种基本结构是( )。
A.顺序结构、选择结构、循环结构
B.递归结构、循环结构、转移结构
C.嵌套结构、递归结构、顺序结构
D.循环结构、转移结构、顺序结构
答案
A
03
以下不属于字符型常量的是( )。
A. ‘$’
B.’+’
C. ‘x2A’
D. “B”
答案
D
04
下列变量定义中, 错误的是( )。
A.int if;
B.int a,A;
C.char a=’’;
D.float x=-3.33333;
答案
A
05
已知:char a ; float b ; double c ; 则执行语句:c = a + b + c; 后变量c的类型为( )。
A.char
B.int
C.float
D.double
答案
D
06
设已有说明语句“in a=5;”,则执行语句“a+=a*=a%=3;”后,a的值为 ( ) 。
A.8
B.18
C.0
D.2
答案
赋值运算符结合性从右向左,选A
07
对数组名作函数的参数,下面描述正确的是( )。
A.数组名作函数的参数,调用时将实参数组复制给形参数组
B.数组名作函数的参数,主调函数和被调函数共用一段存储单元
C.数组名作参数时,形参定义的数组长度不能省略
D.数组名作参数,不能改变主调函数中的数据
答案
B
08
给出下面定义:
char a[]=”abcd”;
char b[]={‘a’,’b’,’c’,’d’};
则下列说法正确的是( )。
A. 数组a与数组b等价
B. 数组a和数组b的长度相同
C. 数组a的长度大于数组b的长度
D. 数组a的长度小于数组b的长度
答案
strlen是求字符串长度函数,字符串中有多少的字符就输出多少,不包括结束
符'0',sizeof()则是求其在内存中长度,即求大小,包括‘0’,选 C
09
设已定义i和k为int类型变量,则以下for循环语句( )。
for ( i =0; i!=0; i++ )
cout<< " * * * * n ";
A.判断循环结束的条件不合法
B.是无限循环
C.循环一次也不执行
D.循环只执行一次
答案
首先变量i赋初值0,然后判断条件i!=0为假,因此跳出循环后面的语句执行,选C
10
执行以下程序段后, 输出的结果为 。
int a=4,b=5,t=0;
if(a>b) t=a;a=b;b=t;
cout<<”a=”<<a<<”,b=”<<b<<endl;
A.a=5,b=4
B.a=4,b=5
C.a=5,b=0
D.语法错误
答案
C
11
执行以下程序段后,m的值为 ( )。
int a[2][3]={{1,2,3},{4,5,6}};
int m,*p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A.15
B.14
C.13
D.12
答案
A
12
在参数传递过程中,对形参和实参的要求是( )。
A.函数定义时,形参一直占用存储空间
B.实参可以是常量、变量或表达式
C.形参可以是常量、变量或表达式
D.形参和实参类型和个数都可以不同
答案
定义时形参不占用空间,在调用时才为其分配空间,形参不能是常量和表达式,只能是关键字加变量名,但c++中可对其赋初值,对于D肯定要相同的,因为调用时将实参复制给形参,类型不同不能复制,选B
13
在C++中使用流进行输入输出,其中用于屏幕输出的对象是( )。
A. cerr
B. cin
C. cout
D. cfile
答案
C
14
假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( )
A. x(a)
B. x[a]
C. x->a
D. x.a
答案
D
15
一个类的友元函数可以访问类的( )成员。
A. 私有成员
B. 保护
C. 公有
D. 以上都正确
答案
成员函数跟友元函数有相同的权限,都可以访问公有、保护、私有的成员,选D
16
下列对基类和派生类关系的描述中,错误的是( )。
A.派生类是基类的具体化
B.派生类是基类的子集
C.派生类是基类定义的延续
D.派生类是基类的组合
答案
本题考核基类和派生类的关系。派生类中包含了基类中的成员,它是对基类定义的扩充和延续,是对基类定义的进一步具体化,而不是基类的子集。选B
17
下列对派生类的描述中,错误的是( )。
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的缺省继承方式是private
D.派生类只继承了基类的公有成员和保护成员
答案
此题的答案选择:B。在类中的默认继承方式是:private,而在结构体中默认的方式为:public.
c++ 里面结构体是可以继承的,你可以自己从上面的代码中复制下来,class 改为 struct ,一样能用。struct和class区别可以理解为缺省可见性不同、没有虚表(没有多态)等。
18
设置虚基类的声明中,正确的是( )。
A. 简化程序
B. 消除二义性
C. 提高运行效率
D. 减少目标代码
答案
消除二义性,
B正解, 虚基类是为了强调"这个类型的某些方法没有意义, 只是为了继承, 不要构造这种类型的对象"
19
下列描述中,( )是抽象类的特征。
A.不能说明其对象
B.可以进行构造函数重载
C.可以定义友元函数
D.可以说明虚函数
答案
抽象类,就是把一个或多个的事物的共有特征抽出来组成的一个类,它可以有虚函数、函数、变量。但它是没有具体的对象的,打个比方,鸟是一种动物的统称,它是一个抽象的概念,它把所有的鸟类的共有特征都抽象出来了,可以这样定义:鸟是一种有翅膀,可以飞翔的动物。它是没有具体的对象的,要有具体的对象,那只能找鸟的具体的分类就是派生类,比如燕子、喜鹊是鸟类的一种,那么燕子和喜鹊是可以有具体的对象的,它是鸟类的派生类。我这 所以答案是选D
20
关于运算符重载,下列说法正确的是( )。
A. 重载时,运算符的优先级可以改变。
B. 重载时,运算符的结合性可以改变。
C. 重载时,运算符的功能可以改变。
D. 重载时,运算符的操作数个数可以改变
答案
运算符重载的概念中就说明,不能修改优先级、操作数个数和结合性,明显选C
21
编写C++程序一般需经过的几个步骤依次是( )。
A. 编辑、调试、编译、连接
B. 编辑、编译、连接、运行
C. 编译、调试、编辑、连接
D. 编译、编辑、连接、运行
答案
B
22
决定C++语言中函数的返回值类型的是( )。
A. return语句中的表达式类型
B. 调用该函数时系统随机产生的类型
C. 调用该函数时的主调用函数类型
D. 在定义该函数时所指定的数据类型
答案
D
23
假定AB为一个类,则执行“AB a(2), b[3],*p[4];”语句时调用该类构造函数的次数 为( )。
A. 3
B. 4
C. 5
D. 9
答案
AB a(4)相当于调用了一次构造函数,这个构造函数是有参数的
AB b[3]调用了三次构造函数
AB* p[2]由于只声明了指针,没有调用构造函数,指针在使用new的时候调用构造函数。选B
24
所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )。
A. 类
B. 对象
C. 函数体
D. 数据块
答案
A
25
所谓多态性是指 ( )。
A. 不同的对象调用不同名称的函数
B. 不同的对象调用相同名称的函数
C. 一个对象调用不同名称的函数
D. 一个对象调用不同名称的对象
答案
多态性有静态和动态两种,静态多态是指调用同名函数,由于参数不同调用不同的同名函数;动态多态是指不同对象调用同名函数时,由于对象不同调用不同的同名函数,多态性肯定具有相同的同名函数,选B
26
假定一个类的构造函数为“A(int i=4, int j=0) {a=i;b=j;}”, 则执行“A x (1);”语 句后,x.a和x.b的值分别为( )
A. 4和1
B. 4和0
C. 1和4
D. 1和0
答案
D
27
下列程序的输出结果是( ) 。
#include <iostream.h>
void main() {
int n[][3]={10,20,30,40,50,60};
int *p=&n[0][0];
cout<<*p<<","<<*(p+1)<<endl;
}
A. 10,20
B. 40,20
C. 10,21
D. 40,21
答案
A
28
在C++中,使用流进行输入输出,其中用于屏幕输入( )。
A. cout
B. cerr
C. clog
D. cin
答案
D
29
假定AA为一个类,a( )为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a( )的格式为( )。
A. x.a
B. x.a()
C. x->a
D. (*x).a()
答案
B
30
关于对象概念的描述中,说法错误的是( )。
A. 对象就是C语言中的结构变量
B. 对象代表着正在创建的系统中的一个实体
C. 对象是类的一个变量
D. 对象之间的信息传递是通过消息进行的
答案
A
31
类MyA的复制构造函数是 ( )。
A. MyA()
B. MyA(MyA*)
C. MyA(MyA&)
D. MyA(MyA)
答案
C
32
在C++中,函数原型不能标识( )
A. 函数的返回类型
B. 函数参数的个数
C. 函数参数类型
D. 函数的功能
答案
D
33
使用地址作为实参传给形参,下列说法正确的是( )。
A. 实参是形参的备份
B. 实参与形参无联系
C. 形参是实参的备份
D. 实参与形参是同一对象
答案
A是值传递的特点,在地址传递时,形参和实参指向内存中同一块区域,选D
34
下列不是描述类的成员函数的是( )。
A. 构造函数
B. 析构函数
C. 友元函数
D. 拷贝构造函数
答案
C
35
下面有关类说法不正确的是( )。
A. 一个类可以有多个构造函数
B. 一个类只有一个析构函数
C. 析构函数需要指定参数
D. 在一个类中可以说明具有类类型的数据成员
答案
C
36
在函数定义中的形参属于( )。
A. 全局变量
B. 局部变量
C. 静态变量
D. 寄存器变量
答案
形参属于局部变量,存放在栈中选B
37
下列有关重载函数的说法中正确的是( )。
A. 重载函数必须具有不同的返回值类型
B. 重载函数参数个数必须相同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
答案
C
38
this指针存在的目的是( )。
A. 保证基类私有成员在子类中可以被访问
B. 保证基类保护成员在子类中可以被访问
C. 保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
D. 保证基类公有成员在子类中可以被访问
答案
C,this与基类子类的问题没有关系。只是一个指向自己的指针,访问自己的数据成员。
39
以下基类中的成员函数表示纯虚函数的是( )。
A. virtual void tt()=0
B. void tt(int)=0
C. virtual void tt(int)
D. virtual void tt(int){}
答案
A
40
为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( )。
A.内联函数
B.重载函数
C.递归函数
D.函数模板
答案
A
This is the END!