C+选择题汇总_题库
电子版
C+
选择题
汇总
题库
电子版
重庆大学学长QQ1964907139,全校各院专业课考研资料有售
一二章
1.下列C++标点符号中表示行注释开始的是 C 。
A)# B); C)// D)}
2.下列字符串中可以用作C++标示符的是 A 。
A)_256 B)class C)delete D)5char
3.下列关于C++函数的描述中正确的是 C 。
A)主函数是程序的入口,它是由用户定义的函数调用。
B)函数是C++中面向对象程序设计框架的基本组成元素。
C)函数在调用前必须先被声明。 D)每个用户定义函数只能被其他函数调用一次。
4.下列关于C++关键字的说法中正确的是 D 。
A)关键字是用户为程序中各种需要命名的“元素”所起的名字。
B)关键字是对程序中的数据进行操作的一类单词。
C)关键字是在程序中起分割内容和界定范围作用的一类单词。
D)关键字是C++中预先定义并实现一定功能的一类单词。
5.每个C++程序都必须有且仅有一个 B 。
A)预处理命令 B)主函数 C)函数 D)语句
6.下面关于对象概念的描述中, A 是错误的。
A)对象就是C语言中的结构变量 B)对象代表着正在创建的系统中的一个实体
C)对象是一个状态和操作(或方法)的封装体 D)对象之间的信息传递是通过消息进行的
7.C++对C语言做了很多改进,下列描述中 D 使得C语言发生了质变,即从面向过程变成面向对象。
A)增加了一些新的运算符 B)允许函数重载,并允许设置默认参数
C)规定函数说明必须用原型 D)引进类和对象的概念
8.下面关于类概念的描述中, D 是错误的。
A)类是抽象数据类型的实现 B)类是具有共同行为的若干对象的统一描述体
C)类是创建对象的样板 D)类就是C语言中的结构体类型
9.C++语言是以 B 语言为基础逐渐发展而演变而成的一种程序设计语言。
A)Pascal B)C C)Basic D)Simula67
10.C++语言中规定函数的返回值的类型是由 D 。
A)return语句中的表达式类型所决定的 B)调用该函数式的主调用函数类型所决定的
C)调用该函数式系统临时确定的 D)在定义该函数式所指的数据类型所决定的
11.下列关于C++与C语言关系的描述中错误的是 C 。
A)C++是C语言的超集 B)C++是C语言进行了扩充
C)C++和C语言都是面向对象的程序设计语言 D)C++包含C语言的全部语法特征
12.下列字符串中可以用做C++标示符的是 A 。
A) _521 B)computer~1 C)case D)3var
13.面向对象程序设计思想的主要特征中不包括 D 。
A)封装性 B)多态性 C)继承性 D)功能分解,逐步求精
14.下列C++标点符号中表示一条预处理命令开始的是 A 。
A)# B)// C)} D);
15.下列关于C++类的描述中错误的是 C 。
A)类与类之间可以通过一些手段进行通信和联络
B)类用于描述事物的属性和对事物的操作
C)类与类之间必须是平等的关系,而不能组成层次关系
D)类与类之间可以通过封装而具有明确的独立性
16.下列C++标点符号中表示一条语句结束的是 A 。
A); B)// C)# D){
17.下列C++标点符号中表示复合语句结束的标记符是 C 。
A)# B)// C)} D);
18.下列C++标点符号中表示复合语句开始的标记符是 A 。
A){ B)// C)} D);
19.下列关键字中, B 即在C语言中使用,又在C++语言中使用。
A)inline B)break C)private D)public
20.下列字符串中不可以用作C++标示符的是 C 。
A)_521 B)computer123 C)int D)flower
21.下列不正确的选项是 D 。
A)C++语言是一种面向对象的程序设计语言,它支持面向对象思想中的3个主要特征
B)标点符号是在程序中起分割内容和界定范围作用的一类单词
C)iostream是一个标准的头文件,定义了一些输入输出流对象
D)类与类之间不可以进行通信和联络
22.下列不正确的选项是 B 。
A)封装是一种信息隐藏技术
B)标识符是由字母、数字、下划线组成的字符串,必须以数字或下划线开头
C)编译是由源程序文件转换到目标文件的过程
D)一个C++程序可以认为是函数串
23.下列与流程控制有关的关键字是 A 。
A)goto B)static C)int D)sizeof
24.下列正确的选项是 A 。
A)继承是创建一个具有别的类的属性和行为的新类的能力
B)C语言支持面向对象的程序设计
C)空白符是一种可以被编译的符号
D)标示符不宜过长,一般设定为16个字符
25.下列关于C++语言的发展说法错误的是 C 。
A)C++语言起源于C语言 B)C++语言最初被称为“带类的C”
C)在1980年C++被命名 D)在1983年C++被命名
27.下列表示引用的方法中, A 是正确的。
已知:int k=1000;
A)int &x=k; B)char &y; C)int &z=1000; D)float &t=&k;
28.下列程序的执行结果为 A 。
#i nclude<iostream.h>
void mian()
{
int n=10;
int* pn=&n;
int* &rn=pn;
(*pn)++;
cout<<"n="<<n<<endl;
(*rn)++;
cout<<”n=”<<n<<endl;
}
A) n=11 n=12 B) n=11 n=11
C) n=10 n=11 D) n=11 n=10
29.下列引用的定义中, B 是错误的。
A)int i; int &j=i; B)int i; int &j; j=i;
C)float i; float &j=i; C)char d; char &k=d;
30. B 是给对象取了一个别名,他引入了对象的同义词。
A)指针 B)引用 C)枚举 D)结构
31.下列表示引用的方法中, A 是正确的。
已知:int m=10;
A)int &x=m; B)int &y=10; C)int &z; D)float &t=&m;
32.下面程序的运行结果是 A 。
#i nclude<iostream.h>
void fun(int &a,int &b)
{ int p;
p=a; a=b; b=p;
}
void exchange(int &a,int &b,int &c)
{
if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
}
void main()
{
int a,b,c;
a=12;
b=639;
c=78;
exchange(a,b,c);
cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
}
A)a=639,b=78,c=12 B)a=12,b=639,c=78 C)a=639,b=12,c=78 D)a=78,b=12,c=639
33.下面的程序输出结果为 C 。
#include<iostream.h>
void main()
{
int *ir;
int i;
ir=&i;
i=17;
cout<<"int i="<<i<<endl;
cout<<"int ir="<<*ir<<endl;
}
A)int i=17 int ir=0 B)int i=0 int ir=17
C)int i=17 int ir=17 D)程序语法错误,没有输出结果
34.对定义重载函数的下列要求中, D 是错误的。
A)要求参数的个数不同 B)要求参数中至少有一个类型不同
C)要求参数个数相同时,参数类型不同 D)要求函数的返回值不同
35.下面函数调用语句中实参的个数是 A 。
xxx((v1,v2),(v3,v4,v5),v6);
A)3 B)4 C)5 D)6
36.系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是 D 。
A)参数个数 B)参数的类型 C)函数名称 D)函数的类型
37.若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是 D 。
A)extern B)register C)auto D)static
38.在C++中,关于下列设置参数默认值的描述中,正确的是 C 。
A)不允许设置设置参数的默认值
B)设置参数默认值只能在定义函数时设置
C)设置参数默认值时,应该事先设置右边的再设置左边的
D)设置参数默认值时,应该全部参数都设置
39.若有下面函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a+b)));
在此函数调用语句中实参的个数是 A 。
A)3 B)4 C)5 D)6
40.下列对重载函数的描述中, A 是错误的。
A)重载函数中不允许使用默认参数
B)重载函数中编译时根据参数表进行选择
C)不要使用重载函数来描述毫无相干的函数
D)构造函数重载将会给初始化带来多种方式
41.在函数声明时,下列 D 项是不必要的。
A)函数的类型 B)函数参数类型 C)函数的名字 D)返回值表达式
42.在函数的返回值类型与返回值表达式的类型的描述中,错误的是 B 。
A)函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B)函数返回值的类型就是返回值表达式的类型
C)函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
D)函数返回值类型确定了返回值表达式的类型
43.下面变量和函数说明:
#i nclude<iostream.h>
char ch='*';
void sub(int x,int y,char ch,double *z)
{
switch(ch)
{
case '+':*z=x+y;break;
case '-':*z=x-y;break;
case '*':*z=x*y;break;
case '/':*z=x/y;break;
}
}
下面合法的函数调用语句是 B 。
A) sub(10,20,ch,y); B) sub(1.2,3.2,'+',&z);
C) sub(sub(1,2,'+',&y),sub(3,4,'+',&x),'-',&y); D) sub(a,b,&x,ch);
44.下列程序的输出结果是 B 。
#include<iostream.h>
void sub1(char a,char b)
{ char c;
c=a; a=b; b=c;
}
void sub2(char *a,char b)
{
char c;
c=*a; *a=b; b=c;
}
void sub3(char *a,char *b)
{
char c;
c=*a; *a=*b; *b=c;
}
void main()
{
char a,b;
a='A';
b='B';
sub1(a,b);
putchar(a);
putchar(b);
a='A';
b='B';
sub2(&a,b);
putchar(a);
putchar(b);
a='A';
b='B';
sub3(&a,&b);
putchar(a);
putchar(b);
putchar('\n');
}
A)ABABAB B)ABBBBA C)ABBABA D)ABABBA
45.下面程序的正确执行结果为 D 。
#include<iostream.h>
int f(int);
void main()
{
int a=2,i;
for(i=0;i<3;i++)
cout<<f(a)<<" ";
cout<<endl;
}
int f(int a)
{
int b=0;
static int c=3;
b++;
c++;
return (a+b+c);
}
A)7 7 7 B)7 10 13 C)7 9 11 D)7 8 9
46.下面程序的正确执行结果为 C 。
#i nclude<iostream.h>
void fun(char * *m)
{
m++;
cout<<*m<<endl;
}
void main()
{
static char *a[]={"MORNING","AFTERNOON","EVENING"};
char * *n;
n=a;
fun(n);
}
A)为空 B)MORNING C)AFTERNOON D)EVENING
47.下面程序的输出结果 B 。
#i nclude<iostream.h>
int fun(char *s)
{
char *p=s;
while(*p!='\0')
p++;
return (p-s);
}
void main()
{
cout<<fun("ABCDEF")<<endl;
}
A)3 B)6 C)8 D)0
48.当一个函数无返回值时,函数的类型应定义为 A 。
A)void B)任意 C)int D)无
49.下面叙述中不正确的是 D 。
A)在函数中,通过return语句传回函数值
B)在函数中,可以有多条return语句
C)主函数名main()后面的一对圆括号中也可以带有形参
D)调用函数必须在一条独立的语句中完成
50.下列 D 的调用方式是引用调用。
A)形参是指针,实参是地址值 B)形参和实参都是变量
C)形参是数组,实参是变量 D)形参是引用,实参是变量
51.在C++中,函数原型不能标识 D 。
A)函数的返回类型 B)函数参数的个数 C)函数参数类型 D)函数的功能
52.下列标识符中, C 是文件级作用域的。
A)函数形参 B)语句标号 C)外部静态类标识符 D)自动类标识符
53.在传值调用中,要求 C 。
A)形参和实参类型任意,个数相等 B)实参和形参类型都完全一致,个数相等
C)实参和形参对应的类型一致,个数相等 D)实参和形参对应的类型一致个数任意
54.有一个int型变量,在程序中频繁使用,最好定义它为 A 。
A)register B)auto C)extern D)static
55.考虑下面的函数原型:void testDefaulParam(int a,int b=7,char z='*');
下面函数调用中不合法的 C 。
A)testDefaulParam(5); B)testDefaulParam(5,8);
C)testDefaulParam(5,'#'); D)testDefaulParam(0,0,'*');
56.采用函数重载的目的在于 D 。
A)实现共享 B)减少空间 C)提高速度 D)使用方便,提高可靠性
57.要求通过函数来实现一种不太复杂的功能,并且要加快执行速度,选
用 A 。
A)内联函数 B)重载函数 C)递归函数 D)嵌套函数
58.下面程序的输出结果是 D 。
#i nclude<iostream.h>
void fun(int i);
int main()
{
int n=2;
fun(n);
return 0;
}
void fun(int i)
{
static int x=1;
int y=1;
if(i>0)
{
++x;
++y;
cout<<x<<' '<<y<<' ';
fun(i-1);
}
}
A)语法错误,不能输出正确结果 B)2 2 2 2 C)2 2 3 3 D)2 2 3 2
59.下面程序的输出结果为 B 。
#i nclude<iostream.h>
void prt(int *x,int *y,int *z)
{
cout<<+ + *x<<","<<+ + *y<<","<<*(z++)<<endl;
}
int a=10;
int c=20;
int b=40;
void main()
{
prt(&a,&b,&c);
prt(&a,&b,&c);
}
A)11,42,31 12,21,41 B)11,41,20 12,42,20
C)11,21,40 11,21,41 D)11,41,21 12,42,22
60.下面程序的正确运行结果为 C 。
#i nclude<iostream.h>
fun(int a,int b)
{
static int m=1,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
void main()
{
int k=5,m=2,p;
p=fun(k,m);
cout<<p<<",";
p=fun(k,m);
cout<<p<<endl;
}
A)11,22 B)12,23 C)11,23 D)10,23
61.下面程序的输出结果是 D 。
#i nclude<iostream.h>
void fun(int *s,int *y)
{
static int t=3;
*y=s[t];
t--;
}
void main()
{
int a[]={1,2,3,4};
int i,x=10;
for(i=0;i<4;i++)
{
fun(a,&x);
cout<<x<<",";
}
cout<<endl;
}
A)1,2,3,4 B)0,0,0,0 C)4,4,4,4 D)4,3,2,1
62.下面程序的输出结果是 A 。
#i nclude<iostream.h>
int fun(char *s)
{
char *p=s;
while(*p!='\0')
p++;
return (p-s);
}
void main()
{
cout<<fun("ABCDEFGHIJKLMNIPQRST")<<endl;
}
A)20 B)6 C)19 D)0
63.下面程序的输出结果是 C 。
#i nclude<iostream.h>
int x=10;
void fun(int c);
void main()
{
fun(x);
cout<<"x="<<x<<endl;
}
void fun(int x)
{
x=1;
}
A)x=0 B)x=1 C)x=10 D)语法错误,不能输出正确结果
64.下面程序的执行结果是 B 。
#i nclude<iostream.h>
void main()
{
void swap();
extern int a,b;
a=3;
b=10;
swap();
cout<<"a="<<a<<",b="<<endl;
}
int a,b;
void swap()
{
int temp;
temp=a;
a=b;
b=temp;
}
A)a=3,b=10 B)a=10,b=3 C)a=temp,b=temp D)语法错误,不能输出正确结果
65.下列程序的输出结果是 A 。
#i nclude<iostream.h>
void f()
{
static int i=15;
i++;
cout<<"i="<<i<<endl;
}
void main()
{
for(int k=0;k<2;k++)
f();
}
A)i=16 i=17 B)i=16 i=15 C)i=15 i=16 D)i=15 i=17
66.在横线处填上适当的语句 C ,使下面程序执行结果是13,18,23。
#include<iostream.h>
int add(int x,int y=8);
void main()
{
;
cout<<add(a)<<",";
cout<<add(a,add(a))<<",";
cout<<add(a,add(a,add(a)))<<endl;
}
int add(int a,int b)
{
int s=a+b;
return s;
}
A)int a=3 B)int b=3 C)int a=5 D)int b=5
67.在横线处填上适当的语句A ,使下面的程序的执行结果是19 24 30 37 45。
#include<iostream.h>
int fun(int a)
{
static int x=10;
int y=1;
x+=a;
a++;
y++;
return(x+y+a);
}
void main()
{
int i=3;
while(i<8)
;
cout<<endl;
}
A)cout<<fun(i++)<<" " B)cout<<fun(i)<<" "
C)cout<<fun(i++)<<" ," D)cout<<fun(i)<<" ,"
68.在C++语言中,局部变量的隐含存储类型是 D 。
A)auto B)static C)extern D)无存储类型
69.下面程序的输出结果为 D 。
#include<iostream.h>
int fun(char *s);
int main()
{
cout<<fun("hello");
return 0;
}
int fun(char *s)
{
char *t=s;
while(*t!='\0')
t++;
return(t-s);
}
A)语法错,不能输出正确结果 B)0 C)6 D)5
第三章一、选择题
1.有关类的说法不正确的是 D 。
A)类是一种用户自定义的数据类型.
B)只有类中的成员函数才能存取类中的私有成员.
C)在类中,如果不做特别说明,所指的数据均为私有类型.
D)在类中,如果不做特别说明,所指的成员函数均为公有类型。
2.类A是类B的友元,类B是类C的友元,则____ D ______是正确的.
A)类B是类A的友元 B)类C是类A的友元
C)类A是类C的友元 D)以上都不对
3.有下面类的说明,有错误的语句是____ A ______。
class X
{
A) int a=2;
B) X();
public:
C) X(int val):
D) ~X();
};
4.有关析构函数的说法不正确的是_____ B _____。
A) 析构函数有且仅有一个
B) 析构函数和构造函数一样可以有形参
C) 析构函数的功能是用来释放一个对象
D) 析构函数无任何函数类型
5.已知一个类X, _____C_____是定义指向类X成员函数的指针,假设类有3个公有成员: void f1(int), void f2(int)和int a.
A)X*P B) int X::*pc=&X::a C) void(X::*pa)() D)X*p[10]
6.下列的各类函数中,____C______不是类的成员函数
A)构造函数 B)析构函数 C)友元函数 D)拷贝构造函数
7.下列定义中,x是一个类, ______B____是定义指向对象数组的指针p.
A)x *p[4] B)x (*p)[4] C)(x*)p[4] D)x *p[]
8.已知p是一个指向类X数据成员m的指针,s是类X的一个对象。如果要给m赋值为3, __ C _____是正确的.
A)s.p=3 B)s - >p=3 C)s.*p=3 D)*s.p=3
9.已知f1(int)是类X的公有成员函数,p是指向成员f1()的指针,采用它赋值, ____ B ______是正确的.
A)p=f1 B)p=X::f1 C)p=x::f1 D)p=f1()
10.已知类X中的一个成员函数说明如下:
Void Set(x &a);
其中,X &a的含义是______ C ____.
A)指向类X的指针为a
B)将a的地址赋给变量Set
C)a是类X的对象引用,用来做为Set()的形参
D)变量X是a按位相与作为函数Set()的参数
11.一个类的友元函数能够访问该类的______ D ____.
A)私有成员 B)保护成员 C)公有成员 D)所有成员
12.有关类和对象的说法不正确的是______ B ____.
A)对象是类的一个实例
B)一个类只能有一个对象
C)任何一个对象只能属于一个具体的类
D)类与对象的关系和数据类型和变量的关系相似
13.下列静态数据成员的特性中,_____ D _____是错误的.
A)说明静态数据成员时前边要加关键字static来修饰
B)静态数据成员在类体外进行初始化
C)引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D)静态数据成员不是所有对象所共有的
14.类模板的使用实际上是类模板实例化成一个具体的_____ A _____.
A)类 B)对象 C)函数 D)模板类
15.通常拷贝构造函数的参数表是_____ C _____.
A)某个对象名 B)某个对象的成员名
C)某个对象的引用名 D)某个对象的指针名
16.关于常数据成员的说法不正确的是_____ D _____.
A)常数据成员的定义形式与一般常量的定义形式相同,只不过常数据成员的定义必须出现在类体中.
B)常数据成员必须进行初始化,并且不能被更新
C)常数据成员通过构造函数的成员初始化列表进行初始化
D)常数据成员可以在定义时直接初始化
17.已知X类.则当程序执行到语句
X array[3];
时,调用了____D______次构造函数.
A)0 B)1 C)2 D)3
18.类模板的模板参数_____ D _____.
A)只可作为数据成员的类型 B)只可作为成员函数的返回类型
C)只可作为成员函数的参数类型 D)以上三者皆可
19.下列_______D___不是构造函数的特征
A)构造函数的函数名与类名相同 B)构造函数可以重载
C)构造函数可以设置默认参数 D)构造函数必须指定类型说明
20.下列程序中说明的公有成员是______ D ____.
class Location{
int X;
public:
void init(int initX,int initY);
private:
int Y;
public:
int GetX();
int GetY();
}
A)X
B)init(int initX,int initY)
C)GetX(),GetY()
D)B)和C)都是
21.类定义的内容允许被其他对象无限制地存取是______ C ____.
A)private 部分 B)protected 部分
C)public 部分 D)以上都不对
22.关于下面程度段说法正确的是_____ A _____.
class X
{
private:
int n;
punblic:
X(X&);
}
X::X(X&x)
{n=x.n}
X obj1,obj2;
obj2(obj1);
A)语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2
B)语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1
C) X(X&x)也可以不使用引用参数而仍然是拷贝构造函数
D) X(X&x)不能访问对象的私有成员
23.this指针是C++实现_____B_____的一种机制.
A)抽象 B)封装 C)继承 D)重载
24.下面程序段中是内联函数的是____ C ______。
chass location
{
private:
int x ,y;
public:
void init(int initx,int inity)
{ x=initx;
y=inity;
}
int getx(){return x;}
int gety();
};
inline int location::gety(){return y;}
A) init (int initx,int inity) B) getx(),gety() C) A)和B)都是 D) A)和getx()
25.关于对象成员的构造函数的调用顺序,说法正确的是_____ C _____。
A)与它们在成员初始化列表中给出的顺序相同
B)与析构函数的调用顺序相同
C)与它们在类中说明顺序相同
D)以上说法都不对
26.类摸板trmplate<class T>classX{……},其中,友元函数f()成为该类模板实例化的每个模板类的友元,则其说明应为_____ A _____.
A)friend void f()
B)friend void f(X<T>&);
C)friend void A::f();
D)friend void C<T>::f(X<T>&);
27.运算符—>*的功能是( A )。
A )用来表示指向对象指针对指向类成员指针的操作。
B)用来表示对象类成员的操作。
C)用来表示指向对象指针对类成员的操作。
D)用来表示对象指向类成员指针的操作。
28.下列说明中
const char * ptr;
ptr 应该是 C 。
A )指向字符的指针 B)指向字符的常量指针
C)指向字符串常量的指针 D)指向字符串的常量指针
29.下面关于友元的描述中,错误的是( D )。
A) 友元函数可以访问该类的私有数据成员。
B) 一个类的友元类中的成员函数都是这个类的友元函数。
C) 友元可以提高程序的运行效率。
D) 类与类之间的友元关系可以继承。
30.一个( C )允许拥护为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
A) 函数模板 B)模板函数
C) 类模板 D)模板类
31.有关构造函数说法不正确的是( D )
A ) 构造函数的名字和类的名字一样。
B) 在创建对象时,系统自动调用构造函数
C) 构造函数无任何函数