c++练习题带答案Word文档下载推荐.docx
《c++练习题带答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c++练习题带答案Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
![c++练习题带答案Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/26/241659b0-7f8e-4a53-9025-3c35460c23b5/241659b0-7f8e-4a53-9025-3c35460c23b51.gif)
A)&
&
B)!
=C).D)->
14.下面程序的输出结果是(B)
#include<
iostream>
usingnamespacestd;
inti=0;
intfun(intn)
{
staticinta=2;
a++;
returna+n;
}
voidmain()
intk=5;
{
inti=2;
k+=fun(i);
}
k+=fun(i);
cout<
<
k;
A)13B)14C)15D)16
15.下面的程序段的运行结果为(D)
charstr[]="
job"
*p=str;
cout<
*(p+2)<
endl;
A)98B)无输出结果C)字符’b’的地址D)字符’b’
16.下面程序的输出结果是(C)
classA
public:
A(inti){x=i;
voiddispa(){cout<
x<
“,”;
private:
intx;
};
classB:
publicA
B(inti):
A(i+10){x=i;
voiddispb(){dispa();
Bb
(2);
b.dispb();
A)10,2B)12,10C)12,2D)2,2
17.下面程序的输出结果是(C)
classBase
Base(inti){cout<
i;
~Base(){}
classBase1:
virtualpublicBase
Base1(inti,intj=0):
Base(j){cout<
~Base1(){}
classBase2:
Base2(inti,intj=0):
~Base2(){}
classDerived:
publicBase2,publicBase1
Derived(inta,intb,intc,intd):
mem1(a),mem2(b),Base1(c),
Base2(d),Base(a)
{cout<
b;
private:
Base2mem2;
Base1mem1;
voidmain(){DerivedobjD(1,2,3,4);
A)134122B)123412C)14302012D)143212
18.下面程序的输出结果是(C)
classBase
virtualvoidf(){cout<
“f0+”;
voidg(){cout<
“g0+”;
publicBase
voidf(){cout<
“f+”;
“g+”;
voidmain(){Derivedd;
Base*p=&
d;
p->
f();
g();
A)f+g+B)f0+g+C)f+g0+D)f0+g0+
19.下面程序的输出结果是(C)
classSample
friendlongfun(Samples)
if(s.x<
2)return1;
returns.x*fun(Sample(s.x-1));
Sample(longa){x=a;
longx;
voidmain()
intsum=0;
for(inti=0;
i<
4;
i++)
sum+=fun(Sample(i));
sum;
}A)12B)16C)10D)34
20.以下程序的输出结果是:
(D)
intfun(char*s)
{char*p=s;
while(*p!
='
\0'
)p++;
return(p-s);
voidmain(){
cout<
fun("
abc"
)<
endl;
A.0B.1C.2D.3
21.有如下程序段:
inti=1;
while
(1)
i++;
if(i==10)break;
if(i%2==0)cout<
’*’;
执行这个程序段输出字符*的个数是(C)
A.10B.3C.4D.5
22.下列关于虚基类的描述中,错误的是(C)
A.使用虚基类可以消除由多继承产生的二义性
B.构造派生类对象时,虚基类的构造函数只被调用一次
C.声明classB:
virtualpublicA说明类B为虚基类
D.建立派生类对象时,首先调用虚基类的构造函数
23.有下类定义
ClassA{
Char*a;
Public:
A():
a(0){}
A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间
A=___________________;
Strcpy(a,aa);
~A(){delete[]a;
正确的选择是(A)
A.newchar[strlen(aa)+1]B.char[strlen(aa)+1]
C.char[strlen(aa)]D.newchar[sizeof(aa)-1]
24.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X)。
A)x.aB)x.a()C)x->
GetValue()D)x.GetValue()
25.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A)intAA:
:
a()B)intAA:
a()
C)AA:
a()D)AA:
inta()
26.有如下程序:
#include<
classTest{
public:
Test(){}
~Test(){cout<
'
#'
;
intmain(){
Testtemp[2],*pTemp[2];
return0;
执行这个程序输出星号(#)的个数为(B)。
A)1B)2C)3D)4
27.有如下程序:
classMyClass{
MyClass(inti=0){cout<
1;
MyClass(constMyClass&
x){cout<
2;
MyClass&
operator=(constMyClass&
3;
return*this;
}
~MyClass(){cout<
MyClassobj1
(1),obj2
(2),obj3(obj1);
obj1=obj2;
}运行时的输出结果是(A)。
A)1123444B)11114444C)121444D)11314444
28.有如下程序:
#include<
classpoint
staticintnumber;
point(){number++;
~point(){number--;
intpoint:
number=0;
voidmain()
{point*ptr;
pointA,B;
point*ptr_point=newpoint[3];
ptr=ptr_point;
pointC;
delete[]ptr;
point:
number;
程序结果为(A)
A)3B)4C)6D)7
29.友元运算符obj++被C++编译器解释为(D)。
A.operator++(obj)B.operator++(obj,0)
B.obj.operator++()D.obj.operator++(0)
二、程序填空
1.用递归法求从1到n的立方和:
f
(1)=1(n=1)
f(n)=f(n-1)+n3(n>
1)
intf(int);
intn,s;
cout<
"
inputthenumbern:
cin>
>
n;
s=f(n);
Theresultis"
s<
return0;
intf(intn){//递归法求立方和函数
if(n==1)return1;
elsereturn(f(n-1)+n*n*n);
3.请将下列程序补充完整,使得输出结果为“DestructorDerivedDestructorBase”。
virtual~Base(){cout<
“DestructorBase”<
~Derived(){cout<
“DestructorDerived”<
};
voidmain()
{
Base*pBase=newDerived;
deletepBase;
三、阅读程序,写出运行结果
1.
cstring>
classCD
charname[20];
intnumber;
voidInit(char*aa,intbb)
strcpy(name,aa);
number=bb;
char*Getname(){returnname;
intGetnumber(){returnnumber;
voidOutput(){cout<
name<
'
number<
CDdx;
CDdy;
dx.Init("
歌唱祖国"
30);
dy.Init("
义勇军进行曲"
3*dx.Getnumber()+5);
dx.Output();
dy.Output();
歌唱祖国30
义勇军进行曲95
2.#include<
usingnamespacestd;
intf(inta){
return++a;
intg(int&
a){
voidmain(){
intm=0,n=0;
m+=f(g(m));
n+=f(f(n));
m="
m<
n="
n<
3.#include<
classDemo
Demo(){cout<
defaultconstructor\n"
Demo(constDemo&
copyconstructor\n"
DemouserCode(Demob){Democ(b);
returnc;
Demoa,d;
callinguserCode()\n"
d=userCode(a);
执行上面的程序的过程中,构造函数Demo()和Demo(constDemo&
x)被调用的次数分别是多少次?
五、编写程序
1、编写函数计算y=1!
+2!
+3!
...n!
,n作为参数传递,在主函数调用该函数并输出结果。
2、编写函数找出二维数组(5*4)中元素的最大值与最小值,并返回其最大值与最小值。
测试结果。
3、编写一个三角形类,有计算面积,显示面积的功能等,并测试。
要求有参数的构造函数及复制构造函数
^^下面关于类概念的描述中,(D)是错误的。
A)类是抽象数据类型的实现B)类是具有共同行为的若干对象的统一描述体
C)类是创建对象的样板D)类就是C语言中的结构体类型
^^D
^^面向对象程序设计思想的主要特征中不包括(D)。
A)封装性B)多态性C)继承性D)功能分解,逐步求精
~~01|11|1|1
^^在C++中,函数原型不能标识()。
A)函数的返回类型B)函数参数的个数C)函数参数类型D)函数的功能
^^有关析构函数的说法不正确的是()。
A)析构函数有且仅有一个B)析构函数和构造函数一样可以有形参
C)析构函数的功能是用来释放一个对象D)析构函数无任何函数类型
^^B
~~01|11|2|1
^^已知X类.则当程序执行到语句,X
array[3];
时,调用了(D)次构造函数。
A)0B)1C)2D)3
~~01|13|1|1
^^类定义的内容允许被其他对象无限制地存取是(C)。
A)private部分B)protected部分C)public部分D)以上都不对
^^C
~~01|01|2|1
^^关于new运算符的下列描述中,(D)是错误的.。
A)它可以用来动态创建对象和对象数组
B)使用它创建对象或对象数组,可以使用运算符DELETE删除
C)使用它创建对象时要调用构造函数
D)使用它调用对象数组时不许指定初始值
^^对于下面程序段,表达式正确的是(B)。
classBase{public:
intb;
publicbase{};
classDerived:
publicbase1,publicbase2{public:
intfun();
Derivedd;
A)d.Base1:
bB)d.Base:
bC)d.bD)d.Base:
fun()
~~01|12|1|1
^^可以用p.a的形式访问派生类对象p的基类成员a其中a是(D)。
A)私有继承的公有成员B)公有继承的私有成员
C)公有继承的保护成员D)公有继承的公有成员
^^下列关于C++类的描述中错误的是(C)。
A)类与类之间可以通过一些手段进行通信和联络
B)类用于描述事物的属性和对事物的操作
C)类与类之间必须是平等的关系,
D)类与类之间可以通过封装而具有明确的独立性
^^下列描述中哪个是正确的(B)。
A)私有派生的子类无法访问父类的成员
B)类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的
C)私有派生类不能作为基类派生子类
D)私有派生类的所有子孙类将无法继续继承该类的成员
^^下列关于构造函数说法不正确的是()。
A)构造函数必须与类同名B)构造函数可以省略不写
C)构造函数必须有返回值D)在构造函数中可以对类中的成员进行初始化
^^如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是(D)。
A)一元运算符B)二元运算符
C)选项A)和选项B)都可能D)重载错误
~~01|14|1|1
^^在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是(D)。
A)一元成员运算符B)二元成员运算符
C)一元友元运算符D)选项B)和选项C)都可能
^^一个类的友元函数能够访问该类的(D)。
A)私有成员B)保护成员C)公有成员D)所有成员
^^下列关于类定义的说法中,正确的是(A)。
A)类定义中包括数据成员和函数成员的声明
B)类成员的缺省访问权限是保护的
C)数据成员必须被声明为私有的 D)成员函数只能在类体外进行定义
^^ A
^^通过运算符重载,可以改变运算符原有的(A)。
A)操作数类型 B)操作数个数 C)优先级 D)结合性
^^A
^^在C++语言中,数据封装要解决的问题是(D)。
A)数据的规范化B)便于数据转换C)避免数据丢失
D)防止不同模块之间数据的非法访问
^^对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是(D)。
A)公有类型B)私有类型C)保护类型D)友元类型
^^在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是(C)。
A)友元函数B)虚函数C)构造函数D)析构函数
^^类的析构函数的作用是(D)。
A)一般成员函数的初始化B)类的初始化
C)对象的初始化D)删除类创建的对象
^^下列说法正确的是(B)。
A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C)类的内联函数必须在类体内定义
D)类的内联函数必须在类体外通过加关键字inline定义
^^下列对派生类的描述中,错误的是(D)。
A)一个派生类可以作为另一个派生类的基类
B)派生类至少有一个基类
C)派生类的成员除了自己的成员外,还包含了它的基类的成员
D)派生类中继承的基类成员的访问权限到派生类保持不变
^^运算符的重载是对已有的运算符赋予多重含义,因此(A)。
A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B)可以改变一个已有运算符的优先级和操作数个数
C)只能重载C++中已经有的运算符,不能定义新运算符
D)C++中已