c++练习题带答案.docx

上传人:b****3 文档编号:6023876 上传时间:2023-05-09 格式:DOCX 页数:15 大小:18.87KB
下载 相关 举报
c++练习题带答案.docx_第1页
第1页 / 共15页
c++练习题带答案.docx_第2页
第2页 / 共15页
c++练习题带答案.docx_第3页
第3页 / 共15页
c++练习题带答案.docx_第4页
第4页 / 共15页
c++练习题带答案.docx_第5页
第5页 / 共15页
c++练习题带答案.docx_第6页
第6页 / 共15页
c++练习题带答案.docx_第7页
第7页 / 共15页
c++练习题带答案.docx_第8页
第8页 / 共15页
c++练习题带答案.docx_第9页
第9页 / 共15页
c++练习题带答案.docx_第10页
第10页 / 共15页
c++练习题带答案.docx_第11页
第11页 / 共15页
c++练习题带答案.docx_第12页
第12页 / 共15页
c++练习题带答案.docx_第13页
第13页 / 共15页
c++练习题带答案.docx_第14页
第14页 / 共15页
c++练习题带答案.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++练习题带答案.docx

《c++练习题带答案.docx》由会员分享,可在线阅读,更多相关《c++练习题带答案.docx(15页珍藏版)》请在冰点文库上搜索。

c++练习题带答案.docx

c++练习题带答案

一、选择题

1.C++语言属于(C)。

A)自然语言B)机器语言C)面向对象语言D)汇编语言

2.下面选项中不属于面向对象程序设计特征的是(C)。

A)继承性B)多态性C)相似性D)封装性

3.可用作C++语言用户标识符的一组标识符是(B)。

A)voiddefine+WORDB)a3_b3_123YN

C)for-abcCaseD)2aDOsizeof

4.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。

A)0B)4C)8D)6

5.下列情况中,哪一种情况不会调用拷贝构造函数(B)

A)用派生类的对象去初始化基类对象时

B)将类的一个对象赋值给该类的另一个对象时

C)函数的形参是类的对象,调用函数进行形参和实参结合时

D)函数的返回值是类的对象,函数执行返回调用者时

6.以下哪一关键字可用于重载函数的区分(C)

A)externB)staticC)constD)virtual

7.下列有关数组的叙述中,正确的是(B)

A)C++中数组的存储方式为列优先存储

B)数组名可以作为实参赋值给指针类型的形参

C)数组下标索引从1开始,至数组长度n结束

D)数组指针的语法形式为:

类型名*数组名[下标表达式];

8.下列有关继承和派生的叙述中,正确的是(C)

A)派生类不能访问通过私有继承的基类的保护成员

B)多继承的虚基类不能够实例化

C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数

D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现

9.实现运行时多态的机制是(A)

A)虚函数B)重载函数C)静态函数D)模版函数

10.若有下面的函数调用:

fun(a+b,3,max(n-1,b));

其中实参的个数是(A)

A)3B)4C)5D)6

11.下列关于this指针的说法正确的是(B)

A)this指针存在于每个函数之中

B)在类的非静态函数中this指针指向调用该函数的对象

C)this指针是指向虚函数表的指针

D)this指针是指向类的函数成员的指针

12.在下列关于C++函数的叙述中,正确的是(C)

A)每个函数至少要有一个参数B)每个函数都必须返回一个值

C)函数在被调用之前必须先声明D)函数不能自己调用自己

13.下列运算符中,不能重载的是(C)

A)&&B)!

=C).D)->

14.下面程序的输出结果是(B)

#include

usingnamespacestd;

inti=0;

intfun(intn)

{

staticinta=2;

a++;

returna+n;

}

voidmain()

{

intk=5;

{

inti=2;

k+=fun(i);

}

k+=fun(i);

cout<

}

A)13B)14C)15D)16

15.下面的程序段的运行结果为(D)

charstr[]="job",*p=str;

cout<<*(p+2)<

A)98B)无输出结果C)字符’b’的地址D)字符’b’

16.下面程序的输出结果是(C)

#include

usingnamespacestd;

classA

{

public:

A(inti){x=i;}

voiddispa(){cout<

private:

intx;

};

classB:

publicA

{

public:

B(inti):

A(i+10){x=i;}

voiddispb(){dispa();cout<

private:

intx;

};

voidmain()

{

Bb

(2);

b.dispb();

}

A)10,2B)12,10C)12,2D)2,2

17.下面程序的输出结果是(C)

#include

usingnamespacestd;

classBase

{

public:

Base(inti){cout<

~Base(){}

};

classBase1:

virtualpublicBase

{

public:

Base1(inti,intj=0):

Base(j){cout<

~Base1(){}

};

classBase2:

virtualpublicBase

{

public:

Base2(inti,intj=0):

Base(j){cout<

~Base2(){}

};

classDerived:

publicBase2,publicBase1

{

public:

Derived(inta,intb,intc,intd):

mem1(a),mem2(b),Base1(c),

Base2(d),Base(a)

{cout<

private:

Base2mem2;

Base1mem1;

};

voidmain(){DerivedobjD(1,2,3,4);}

A)134122B)123412

18.下面程序的输出结果是(C)

#include

usingnamespacestd;

classBase

{

public:

virtualvoidf(){cout<<“f0+”;}

voidg(){cout<<“g0+”;}

};

classDerived:

publicBase

{

public:

voidf(){cout<<“f+”;}

voidg(){cout<<“g+”;}

};

voidmain(){Derivedd;Base*p=&d;p->f();p->g();}

A)f+g+B)f0+g+C)f+g0+D)f0+g0+

19.下面程序的输出结果是(C)

#include

usingnamespacestd;

classSample

{

friendlongfun(Samples)

{

if(s.x<2)return1;

returns.x*fun(Sample(s.x-1));

}

public:

Sample(longa){x=a;}

private:

longx;

};

voidmain()

{

intsum=0;

for(inti=0;i<4;i++)

{

sum+=fun(Sample(i));

}

cout<

}A)12B)16C)10D)34

20.以下程序的输出结果是:

(D)

#include

usingnamespacestd;

intfun(char*s)

{char*p=s;

while(*p!

='\0')p++;

return(p-s);

}

voidmain(){

cout<

}

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

usingnamespacestd;

classTest{

public:

Test(){}

~Test(){cout<<'#';}

};

intmain(){

Testtemp[2],*pTemp[2];

return0;

}

执行这个程序输出星号(#)的个数为(B)。

A)1B)2C)3D)4

27.有如下程序:

#include

usingnamespacestd;

classMyClass{

public:

MyClass(inti=0){cout<<1;}

MyClass(constMyClass&x){cout<<2;}

MyClass&operator=(constMyClass&x){cout<<3;return*this;}

~MyClass(){cout<<4;}

};

intmain(){

MyClassobj1

(1),obj2

(2),obj3(obj1);

obj1=obj2;

return0;

}运行时的输出结果是(A)。

A)1123444B)

28.有如下程序:

#include

usingnamespacestd;

classpoint

{

public:

staticintnumber;

public:

point(){number++;}

~point(){number--;}

};

intpoint:

:

number=0;

voidmain()

{point*ptr;

pointA,B;

{

point*ptr_point=newpoint[3];

ptr=ptr_point;

}

pointC;

delete[]ptr;

cout<

:

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)

#include

usingnamespacestd;

intf(int);

intmain(){

intn,s;

cout<<"inputthenumbern:

";

cin>>n;

s=f(n);

cout<<"Theresultis"<

return0;

}

intf(intn){//递归法求立方和函数

if(n==1)return1;

elsereturn(f(n-1)+n*n*n);

}

3.请将下列程序补充完整,使得输出结果为“DestructorDerivedDestructorBase”。

#include

usingnamespacestd;

classBase

{

public:

virtual~Base(){cout<<“DestructorBase”<

};

classDerived:

publicBase

{

public:

~Derived(){cout<<“DestructorDerived”<

};

voidmain()

{

Base*pBase=newDerived;

deletepBase;

}

三、阅读程序,写出运行结果

1.

#include

#include

usingnamespacestd;?

classCD

{

charname[20];

intnumber;

public:

voidInit(char*aa,intbb)

{

strcpy(name,aa);

number=bb;

}

char*Getname(){returnname;}

intGetnumber(){returnnumber;}

voidOutput(){cout<

};

CDdx;

voidmain()

{

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){

return++a;

}

voidmain(){

intm=0,n=0;

m+=f(g(m));

n+=f(f(n));

cout<<"m="<

cout<<"n="<

}

3.#include

usingnamespacestd;

classDemo

{

public:

Demo(){cout<<"defaultconstructor\n";}

Demo(constDemo&x){cout<<"copyconstructor\n";}

};

DemouserCode(Demob){Democ(b);returnc;}

voidmain()

{

Demoa,d;

cout<<"callinguserCode()\n";

d=userCode(a);

}

执行上面的程序的过程中,构造函数Demo()和Demo(constDemo&x)被调用的次数分别是多少次?

五、编写程序

1、编写函数计算y=1!

+2!

+3!

...n!

,n作为参数传递,在主函数调用该函数并输出结果。

2、编写函数找出二维数组(5*4)中元素的最大值与最小值,并返回其最大值与最小值。

测试结果。

3、编写一个三角形类,有计算面积,显示面积的功能等,并测试。

要求有参数的构造函数及复制构造函数

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2