最新C++复习题及答案资料.docx
《最新C++复习题及答案资料.docx》由会员分享,可在线阅读,更多相关《最新C++复习题及答案资料.docx(18页珍藏版)》请在冰豆网上搜索。
最新C++复习题及答案资料
当然,在竞争日益激烈的现代社会中,创业是件相当困难的事。
我们认为,在实行我们的创业计划之前,我们首先要了解竞争对手,吸取别人的经验教训,制订相应竞争的策略。
我相信只要我们的小店有自己独到的风格,价格优惠,服务热情周到,就一定能取得大多女孩的信任和喜爱。
自制性手工艺品。
自制饰品其实很简单,工艺一点也不复杂。
近两年来,由于手机的普及,自制的手机挂坠特别受欢迎。
一、选择题
1、关于C++与C语言关系的描述中,(D)是错误的。
AC语言是C++语言的一个子集
BC语言与C++语言是兼容的
CC++语言对C语言进行了一些改进
DC++语言和C语言都是面向对象的
2、下列说法中不正确的是(C)。
A对象是类的一个实例
B任何一个对象只能属于一个类
C一个类只能有一个对象
D类与对象间的关系和数据类型与变量间关系相类似
3、当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D)。
A只能是公有成员
B只能是保护成员
C只能是除私有成员之外的任何成员
D任何权限的成员
4、(B)是析构函数的特征。
A析构函数在对象创建时调用
B一个类中只能定义一个析构函数
C析构函数的定义只能在类体内
D析构函数可以有一个或多个参数
5、要声明一个有10个int型元素的数组,正确的语句是(A)
Ainta[10]Binta[2,5]
Cinta[]Dint*a[10]
6、如果变量x,y已经正确定义,下列语句哪一项不能正确将x,y的值进行交换(D)。
Ax=x+y,y=x-y,x=x-y
Bt=x,x=y;y=t
Ct=y,y=x,x=t
Dx=t,t=y,y=x
7、假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
Ax.aBx.a()
Cx->GetValue()Dx.GetValue()
8、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)。
A内联函数B重载函数
C递归调用D嵌套调用
9、设int*p,i;以下正确的语句是(C)
A*p=&10Bi=p
Ci=*pDp=2*p+1
10、静态数据成员的初始化必须在(B)。
A类内B类外
C在构造函数内D静态成员函数内
11、当一个函数无返回值时,定义它的函数类型应是(A)。
AvoidBint
C任意D无
12、在下列关键字中,用于说明类中公有成员的是(A)。
ApublicBprivate
CprotectedDfriend
13、C++程序的执行总是从哪里开始的(B)。
A第一行Bmain()函数
C头文件D注释
14、(D)不是构造函数的特征。
A构造函数的函数名与类名相同
B构造函数可以重载
C构造函数可以设置缺省参数
D构造函数必须指定类型说明
15、面向对象方法的多态性是指(C)。
A一个类可以派生出多个特殊类
B一个对象在不同的运行环境中可以有不同的变体
C针对同一消息,不同的对象可以以适合自身的方式加以响应
D一个对象可以是由多个其他对象组合而成的
16、按照标识符定义的要求,(C)符号不能组成标识符。
A大小写字母B下划线
C连接符D数字字符
17、若类X是类Y的友元类,则下列哪种访问关系是正确的(B)。
A类X的成员不能访问类Y的私有成员
B类X的成员可以访问类Y的私有成员
C类Y的成员可以访问类X的私有成员
D只有类Y的公共成员才能访问类X的私有成员
18、如果编程者没有显式定义构造函数(包括复制构造函数),C++编译器就(D)。
A出现编译错误B没有构造函数
C必须显示定义D隐式定义缺省的构造函数
19、关于成员函数特征的下述描述中,哪个是错误的(A)。
A成员函数一定是内联函数
B成员函数可以重载
C成员函数可以设置参数的缺省值
D成员函数可以是静态的
20、静态成员函数仅能访问(A)。
A静态的数据成员B非静态的数据成员
C非静态的成员函数D以上都不对
21、以下不正确的C++标识符是(D)。
AABCBabc
Ca_bcDab.c
22、抽象类是(A)。
A不可以定义对象
B可以定义对象
C不可以派生新类
D不可以输出
23、在c++中,一个虚函数是通过下列哪个关键字放在其基类说明的前面来加以说明的(A)。
AvirtualBprotected
CoperatorDthis
24、在定义inta[5][4];之后,对a的引用正确的是(C)。
Aa[2][4]Ba[5][0]
Ca[0][0]Da[0,0]
25、在一个类的定义中,包含对什么成员的定义(C)。
A数据B函数
C数据和函数D数据或函数
26、在计算机上可以直接运行的程序是(D)。
AC++源程序B高级语言程序
C汇编语言程序D机器语言程序
27、下面描述中,表达错误的是(B)。
A.公有继承时基类中的public成员在派生类中仍是public的
B.公有继承时基类中的private成员在派生类中仍是private的
C.公有继承时基类中的protected成员在派生类中仍是protected的
D.私有继承时基类中的public成员在派生类中是private的
28、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)。
A内联函数B重载函数
C递归调用D嵌套调用
29、下列对派生类的描述中,错误的是(D)。
A.一个派生类可以作另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
30、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(D)。
A基类、自己所属类、对象成员所属类
B自己所属类、对象成员所属类、基类
C对象成员所属类、基类、自己所属类
D基类、对象成员所属类、自己所属类
二、填空题
1、在C++中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。
2、在C++中,用数组、指针和引用作为函数参数,能够将参数值带回。
3、如果类A继承了类B,则类A称为派生类(或子类),类B称为基类(或父类)。
4、面向对象程序设计有四大特征,它们是抽象、封装、继承、多态。
5、C++中可以有许多相同名称,但参数类型或个数不同的成员函数,称为函数重载。
6、请写出与数学表达式5/9(F-32)相对应的C++表达式5.0/9.0*(F-32)。
7、构造函数是对象被创建时自动执行。
一个类有可以多个构造函数,可以有一个析构函数。
8、动态关联需要满足的两个条件,它们是所调用的函数是虚函数,用指针或引用调用该虚函数。
9、类的成员的访问权限有public、protected和private三种。
10、x*=y+8等价于x=x*(y+8)。
11、类的静态成员分为静态数据成员和静态成员函数。
12、友元可以是友元函数,也可以是友元类。
13、声明类的静态成员用关键字static,声明类的友元函数用关键字friend。
14、在C++中,一个派生类可以从一个基类派生称为单继承;也可以从多个基类派生,称为多重继承。
无论按哪种方式继承,基类的private(私有)成员在派生类中始终是不可访问的。
15、在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;在基类和派生类中,成员函数的覆盖是指派生类中的函数覆盖了基类中的同名函数。
16、类作用域运算符“:
:
”的作用用来指明哪个函数属于哪个类或哪个数据属于哪个类。
17、面向对象方法的多态性是指针对同一消息,不同的对象可以以适合自身的方式加以响应。
多态的实现分为两类编译时多态和运行时多态(或静态多态;动态多态)。
18、类的静态数据成员是类的所有对象共享的成员。
19、若需要把一个函数“voidfun()”定义为一个类A的友元函数,则应在类A的定义中加入一条语句:
friendvoidfun()。
20、请写出与数学表达式4/3πR3相对应的C++表达式4.0/3*3.14*R*R*R。
21、在C++中,函数参数的两种传递方式分别是值传递和地址传递。
22、一个类和对象的关系,正如基本数据类型与该类型的变量一样,如intx;。
23、在一个类中定义常数据成员用关键字const,定义静态数据成员用关键字static。
24、在C++中,为对象申请空间时用new,而撤消对象时释放内存空间则用delete。
25、在私有继承关系下,基类的公有成员和保护成员将成为派生类中的私有成员,它们只能由派生类的成员函数来访问;基类的私有成员对于派生类而言是不可访问。
三、判断题
1.类中所提供的成员函数可以直接访问私有成员。
T
2.字符串是用单引号括起来的若干字符。
F
3.构造函数和析构函数都不能重载。
F
4.静态成员变量每个对象都有一份拷贝。
F
5.子类可以改造从父类继承的成员。
T
6.说明或定义对象时,类名前不需加class关键字。
T
7.运算符重载就是赋予尚未有的运算符多种运算的功能。
F
8.使用关键字class定义的类中缺省的访问权限是公有的。
F
9.显式类型转换可以把一个变量转换成另外一种数据类型。
T
10.友元函数的声明不受访问区域的影响。
T
11、构造函数和析构函数都可以重载。
F
12、C++的源程序可以直接在计算机上运行。
F
13、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
F
14、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。
F
15、字符串是用双引号括起来的一个或多个字符。
T
16、子类可以继承父类的所有成员。
F
17、抽象类不可以继承,只能派生。
F
18、使用new申请的内存,在程序执行结束时,必须使用delete释放。
T
19、在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。
T
20、多态的实现分为两类:
编译时的多态和运行时的多态。
T
21、发生函数调用时,只能把实参的值传递给形参。
F
22、类A是类B的友元,则类B一定是类A的友元。
F
23、a*b是合法的C++标识符。
F
24、可以在类的构造函数中对静态数据成员进行初始化。
F
25、protected和private区别在于:
protected成员可以被派生类访问,而private成员则不能被派生类访问。
T
26、构造函数和析构函数都可以重载。
F
27、使用关键字class定义的类中缺省访问权限是私有(private)的。
T
28、成员运算符描述的是对象和成员之间的关系。
T
29、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用函数重载。
F
30、如果有以下定义,inta=10,*ptr=&a;则变量ptr的值为10。
F
四、阅读程序写结果
1、
#include
usingnamespacestd;
inlinefloatfmax(floatx,floaty)
{
returnx>y?
x:
y;
}
intmain()
{
floata=12.3,b=20.5;
cout<<"fmax(a,b)="<return0;
}
2、
#include
usingnamespacestd;
intmain()
{
cout<<"This"<<"is";
cout<<"a"<<"C++";
cout<<"program."<return0;
}
3、
#include
usingnamespacestd;
classA
{
private:
intx;
inty;
public:
A(inta,intb)
{
x=a;
y=b;
}
voidprint(){cout<<"x="<};
intmain()
{
Aa(-5,-10);
a.print();
return0;
}
4、
#include
usingnamespacestd;
intsum(intx,inty);
intsum(intx,inty,intz);
doublesum(doublex,doubley);
doublesum(doublex,doubley,doublez);
intmain()
{
cout<cout<cout<return0;
}
intsum(intx,inty)
{returnx+y;}
intsum(intx,inty,intz)
{returnx+y+z;}
doublesum(doublex,doubley)
{returnx+y;}
doublesum(doublex,doubley,doublez)
{returnx+y+z;}
5、
#include
usingnamespacestd;
classBox
{public:
Box(int,int,int);
intvolume();
private:
intheight;
intwidth;
intlength;
};
Box:
:
Box(inth,intw,intlen)
{height=h;
width=w;
length=len;
}
intBox:
:
volume()
{return(height*width*length);}
intmain()
{
Boxbox1(12,25,30);
cout<<"Thevolumeofbox1is"<Boxbox2(15,30,21);
cout<<"Thevolumeofbox2is"<return0;
}
6、
#include
usintnamespacestd;
classPoint
{
private:
intx;
inty;
public:
Point(inta,intb){x=a;y=b;}
intgetx(){returnx;}
intgety(){returny;}
};
classCircle:
publicPoint
{
private:
intr;
public:
Circle(inta,intb,intc):
Point(a,b){r=c;}
intgetr(){returnr;}
floatarea(){return3.14159*r*r;}
};
intmain()
{
Circlec(15,20,10);
cout<<"圆心为:
("<cout<<"半径为:
"<cout<<"面积为:
"<return0;
}
7、
#include
usingnamespacestd;
classA
{public:
A(){cout<<"ConstructorA"<~A(){cout<<"DestructorA"<};
classB:
publicA
{public:
B(){cout<<"ConstructorB"<~B(){cout<<"DestructorB"<};
intmain()
{Bb;
return0;
}
五、编写程序
1、设计一个程序,用内联函数实现求出三个整数中的最小值,并输出。
2、定义一个求两个整数中较大值的函数max(),要求定义成内联函数,然后在main()函数中进行调用。
3、类Person的定义如下,请实现该类,并创建对象obj,然后使用构造函数为obj赋予初始值(内容自定)。
classPerson
{
private:
stringname;
intage;
intsalary;
stringtel;
public:
Person(stringxname,intxage,intxsalary,stringxtel);
voiddisp();
};
4、实现一个类A,在A中有两个私有整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。
实现类B从A继承,覆盖geta(),使其返回a的2倍。
5、建立一个名为Teacher的类,该类有以下几个私有成员变量:
教师姓名、工资号、性别、年龄。
还有以下两个成员变量:
一个用于初始化教师姓名、工资号、性别和年龄的构造函数,一个用于输出教师信息的函数。
编写一个主函数,声明一个教师对象,然后调用成员函数在屏幕输出教师信息。
阅读程序写结果
1、
fmax(a,b)=20.5
2、
ThisisaC++program.
3、
x=-5;y=-10
4、
64
63
33.7
5、
Thevolumeofbox1is9000
Thevolumeofbox2is9450
6、
圆心为:
(15,20)
半径为:
10
面积为:
314.159
7、
ConstructorA
ConstructorB
DestructorB
DestructorA
编写程序
1、
#include
usingnamespacestd;
inlineintmin(inta,intb,intc)
{
if(a>b)a=b;
if(a>c)a=c;
returna;
}
intmain()
{
inta,b,c,m;
cout<<"Pleaseinputa,b,c:
"<cin>>a>>b>>c;
m=min(a,b,c);
cout<<"Theminimumintegeris:
"<return0;
}
2、
#include
usingnamespacestd;
inlineintmax(floatx,floaty)
{
return(x>y?
x:
y);
}
intmain()
{
floatm=10.5,n=20.7,t;
t=max(m,n);
cout<<"较大值="<return0;
}
3、
#include
usingnamespacestd;
classPerson
{
private:
stringname;
intage;
intsalary;
stringtel;
public:
Person(stringxname,intxage,intxsalary,stringxtel);
voiddisp();
};
Person:
:
Person(stringxname,intxage,intxsalary,stringxtel)
{
Name=xname;
age=xage;
salary=xsalary;
tel=xtel;
}
voidPerson:
:
disp()
{
cout<cout<<"姓名:
"<cout<<"年龄:
"<cout<<"工资:
"<cout<<"电话:
"<}
voidmain()
{
Personobj("张三",25,850,"45678912");
obj.disp();
}
4、
classA
{
inta;
intb;
public:
A(intm,intn):
a(m),b(n){}
intgeta(){returna;}
intgetb(){returnb;}
};
classB:
publicA
{
public:
B(intm,intn):
A(m,n){}
intgeta(){returnA:
:
geta()*2;}
};
voidmain()
{
Bb(2,2);
b.geta();
}
5、
#include
usingnamespacestd;
classTeacher
{
private:
stringname;
intnumber;
charsex;
intage;
public:
Teacher(stringp,intn,chars,inta)
{
name=p;
number=n;
sex=s;
age=a;
};
voidprint()
{
cout<<"姓名="<if(sex=='f'||sex=='F')
2、你大部分的零用钱用于何处?