C++练习题附答案.docx

上传人:b****3 文档编号:10268211 上传时间:2023-05-24 格式:DOCX 页数:52 大小:32.44KB
下载 相关 举报
C++练习题附答案.docx_第1页
第1页 / 共52页
C++练习题附答案.docx_第2页
第2页 / 共52页
C++练习题附答案.docx_第3页
第3页 / 共52页
C++练习题附答案.docx_第4页
第4页 / 共52页
C++练习题附答案.docx_第5页
第5页 / 共52页
C++练习题附答案.docx_第6页
第6页 / 共52页
C++练习题附答案.docx_第7页
第7页 / 共52页
C++练习题附答案.docx_第8页
第8页 / 共52页
C++练习题附答案.docx_第9页
第9页 / 共52页
C++练习题附答案.docx_第10页
第10页 / 共52页
C++练习题附答案.docx_第11页
第11页 / 共52页
C++练习题附答案.docx_第12页
第12页 / 共52页
C++练习题附答案.docx_第13页
第13页 / 共52页
C++练习题附答案.docx_第14页
第14页 / 共52页
C++练习题附答案.docx_第15页
第15页 / 共52页
C++练习题附答案.docx_第16页
第16页 / 共52页
C++练习题附答案.docx_第17页
第17页 / 共52页
C++练习题附答案.docx_第18页
第18页 / 共52页
C++练习题附答案.docx_第19页
第19页 / 共52页
C++练习题附答案.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++练习题附答案.docx

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

C++练习题附答案.docx

C++练习题附答案

5.9

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

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

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

(12)下列关于类和对象的叙述中,错误的是

A)一个类只能有一个对象

B)对象是类的具体实例

C)类是对某一类对象的抽象

D)类和对象的关系是一种数据类型与变量的关系

(13)在C++中,用于实现运行时多态性的是

A)内联函数B)重载函数

C)模板函数D)虚函数

(14)下列关于运算符重载的叙述中,正确的是

A)通过运算符重载,可以定义新的运算符

B)有的运算符只能作为成员函数重载

C)若重载运算符+,则相应的运算符函数名是+

D)重载一个二元运算符时,必须声明两个形参

(15)下列关于模板的叙述中,错误的是

A)模板声明中的第一个符号总是关键字template

B)在模板声明中用<和>括起来的部分是模板的形参表

C)类模板不能有数据成员

D)在一定条件下函数模板的实参可以省略

(16)对于语句cout<

A)"cout"是一个输出流对象

B)"endl"的作用是输出回车换行

C)"x"是一个变量

D)"<<"称作提取运算符

(17)下列字符串中,正确的C++标识符是

A)foo-1B)2b

C)newD)_256

(18)已知枚举类型定义语句为:

enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};

则下列叙述中错误的是

A)枚举常量NAME的值为1B)枚举常量NUMBER的值为1

C)枚举常量MINUS的值为6D)枚举常量PRINT的值为10

(19)执行语句序列

inti=0;while(i<25)i+=3;cout<

输出结果是

A)24B)25

C)27D)28

(20)要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句

中错误的是

A)intvect[]={30,50,-88};B)intvect[]={30,50,-88,0,0};

C)intvect[5]={30,50,-88};D)intvect[5]={30,50,-88,0,0};

(21)有如下程序:

#include

voidfun(int&x,inty){intt=x;x=y;y=t;}

intmain()

{

inta[2]={23,42};

fun(a[1],a[0]);

std:

:

cout<

:

endl;

return0;

}

执行后的输出结果是

A)42,42B)23,23

C)23,42D)42,23

(22)有如下类声明:

classFoo{intbar;};

则Foo类的成员bar是

A)公有数据成员B)公有成员函数

C)私有数据成员D)私有成员函数

(23)有如下类声明:

classMyBASE

{

intk;

public:

voidset(intn){k=n;}

intget()const{returnk;}

};

classMyDERIVED:

protectedMyBASE

{

protected:

intj;

public:

voidset(intm,intn){MyBASE:

:

set(m);j=n;}

intget()const{returnMyBASE:

:

get()+j;}

};

则类MyDERIVED中保护的数据成员和成员函数的个数是

A)4B)3

C)2D)1

(24)已知在一个类体中包含如下函数原型:

VOLUMEoperator-(VOLUME)const;,下列关于这个函数的叙述中,错误

的是

A)这是运算符-的重载运算符函数

B)这个函数所重载的运算符是一个一元运算符

C)这是一个成员函数

D)这个函数不改变类的任何数据成员的值

(25)有如下函数模板定义:

template

Tfunc(Tx,Ty){returnx*x+y*y;}

在下列对func的调用中,错误的是

A)func(3,5);B)func(3.0,5.5);

C)func(3,5.5);D)func(3,5.5);

(27)在下列函数原型中,可以作为类AA构造函数的是

A)voidAA(int);

B)intAA();

C)AA(int)const;

D)AA(int);

(28)下列关于this指针的叙述中,正确的是

A)任何与类相关的函数都有this指针

B)类的成员函数都有this指针

C)类的友元函数都有this指针

D)类的非静态成员函数才有this指针

(29)有如下程序:

#include

usingnamespacestd;

classTest

{

public:

Test(){n+=2;}

~Test(){n-=3;}

staticintgetNum(){returnn;}

private:

staticintn;

};

intTest:

:

n=1;

intmain()

{

Test*p=newTest;

deletep;

cout<<"n="<

:

getNum()<

return0;

}

执行后的输出结果是

A)n=0B)n=l

C)n=2D)n=3

(30)有如下程序:

#include

usingnamespacestd;

classA{

public:

A(){cout<<"A";}

};

classB{public:

B(){cout<<"B";}}

classC:

publicA{

Bb;

public:

C(){cout<<"C";}

};

intmain(){Cobj;return0;}

执行后的输出结果是

A)CBAB)BAC

C)ACBD)ABC

(31)有如下类声明:

classXA{

intx;

public:

XA(intn){x=n;}

};

classXB:

publicXA{

inty;

public:

XB(inta,intb);

};

在构造函数XB的下列定义中,正确的是

A)XB:

:

XB(inta,intb):

x(a),y(b){}B)XB:

:

XB(inta,intb):

XA(a),y(b){}

C)XB:

:

XB(inta,intb):

x(a),XB(b){}D)XB:

:

XB(inta,intb):

XA(a),XB(b){}

(32)有如下程序:

#include

usingnamespacestd;

classBASE{

public:

~BASE(){cout<<"BASE";}

};

classDERIVED:

publicBASE{

public:

~DERIVED(){cout<<"DERIVED";}

};

intmain(){DERIVEDx;return0;}

执行后的输出结果是

A)BASEB)DERIVED

C)BASEDERIVEDD)DERIVEDBASE

(33)在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。

下列叙述中正确的

A)operator+有两个参数,operator*有两个参数

B)operator+有两个参数,operator*有一个参数

C)operator+有一个参数,operator*有两个参数

D)operator+有一个参数,operator*有一个参数

(34)下面关于C++流的叙述中,正确的是

A)cin是一个输入流对象

B)可以用ifstream定义一个输出流对象

C)执行语句序列char*y="PQMN";cout<

D)执行语句序列charx[80];cin.getline(x,80);时,若键入

Happynewyear

则x中的字符串是"Happy"

(35)有如下程序:

#include

usingnamespacestd;

classAA{

intn;

public:

AA(intk):

n(k){}

intget(){returnn;}

intget()const{returnn+1;}

};

intmain()

{

AAa(5);

constAAb(6);

cout<

return0;

}

执行后的输出结果是

A)55B)57

C)75D)77

(6)下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回

false。

请在横线处填上适当内容,实现该函数。

boolfun(char*str)

{

inti=0,j=0;

while(str[j])___________;

for(j--;i

returni___________j;

}

(7)执行语句序列

intx=l0,&r=x;

cout<

输出结果为___________。

(8)下列程序的输出结果为

Objectid=0

Objectid=l

请将程序补充完整。

#include

usingnamespacestd;

classPoint

{

public:

Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}

~Point(){countP--;}

intGetX(){returnX;}

intGetY(){returnY;}

staticvoidGetC(){cout<<"Objectid="<

private:

intX,Y;

staticintcountP;

};

___________//静态数据成员的初始化

intmain()

{

Point:

:

GetC();

PointA(4,5);

A.GetC();

return0;

}

}

(9)非成员函数应声明为类的___________函数才能访问这个类的private成员。

(10)派生类中的成员不能直接访问基类中的___________成员。

(11)下列程序的输出结果为2,请将程序补充完整。

#include

usingnamespacestd;

classBase

{

public:

___________voidfun(){cout<<1;}

};

classDerived:

publicBase

{

public:

voidfun(){cout<<2;}

};

intmain()

{

Base*p=newDerived;

p->fun();

deletep;

return0;

}

(12)请将下列类定义补充完整。

classBase{public:

voidfun(){cout<<"Base:

:

fun"<

classDerived:

publicBase

{

public:

voidfun(){

___________//显式调用基类的fun函数

cout<<"Derived:

:

fun"<

}

};

一、选择题

(11)C)(12)A)(13)D)(14)B)(15)C)

(16)D)(17)D)(18)A)(19)C)(20)A)

(21)B)(22)C)(23)B)(24)B)(25)C)

(27)D)(28)D)(29)A)(30)D)

(31)B)(32)D)(33)C)(34)A)(35)B)

二、填空题

(6)j++>=

(8)intPoint:

:

countP=0;

(9)友元

(10)私有或private

(11)virtual

(12)Base:

:

fun();

6.4

(11)下列关于C++函数的说明中,正确的是

A)内联函数就是定义在另一个函数体内部的函数

B)函数体的最后一条语句必须是return语句

C)标准C++要求在调用一个函数之前,必须先声明其原型

D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式

(13)下列关于虚函数的说明中,正确的是

A)从虚基类继承的函数都是虚函数

B)虚函数不得是静态成员函数

C)只能通过指针或引用调用虚函数

D)抽象类中的成员函数都是虚函数

(14)运算符重载是对已有的运算符赋予多重含义,因此

A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义

B)可以改变一个已有运算符的优先级和操作数个数

C)只能重载C++中已经有的运算符,不能定义新运算符

D)C++中已经有的所有运算符都可以重载

(15)模板对类型的参数化提供了很好的支持,因此

A)类模板的主要作用是生成抽象类

B)类模板实例化时,编译器将根据给出的模板实参生成一个类

C)在类模板中的数据成员都具有同样类型

D)类模板中的成员函数都没有返回值

(18)下列语句中,错误的是

A)constintbuffer=256;B)constinttemp;

C)constdouble*point;D)constdouble*rt=newdouble(5.5);

(20)有如下程序:

#include

usingnamespacestd;

intmain()

{

int*p;

*p=9;

cout<<"Thevalueatp:

"<<*p;

return0;

}

编译运行程序将出现的情况是

A)编译时出现语法错误,不能生成可执行文件

B)运行时一定输出:

Thevalueatp:

9

C)运行时一定输出:

Thevalueatp:

*9

D)运行时有可能出错

(21)有如下程序:

#include

usingnamespacestd;

intmain()

{

voidfunction(doubleval);

doubleval;

function(val);

cout<

return0;

}

voidfunction(doubleval)

{

val=3;

}

编译运行这个程序将出现的情况是

A)编译出错,无法运行B)输出:

3

C)输出:

3.0D)输出一个不确定的数

(22)有如下类定义:

classAA

{

inta;

public:

intgetRef()const{return&a;}//①

intgetValue()const{returna;}//②

voidset(intn)const{a=n;}//③

friendvoidshow(AAaa)const{cout<

};

其中的四个函数定义中正确的是

A)①B)②

C)③D)④

(23)有如下程序:

#include

usingnamespacestd;

classBase

{

public:

voidfun(){cout<<"Base:

:

fun"<

};

classDerived:

publicBase

{

public:

voidfun()

{

___________

cout<<"Derived:

:

fun"<

}

};

intmain()

{

Derivedd;

d.fun();

return0;

}

已知其执行后的输出结果为:

Base:

:

fun

Derived:

:

fun

则程序中下划线处应填入的语句是

A)Base.fun();B)Base:

:

fun();

C)Base->fun();D)fun();

(24)下面是重载为非成员函数的运算符函数原型,其中错误的是

A)Fractionoperator+(Fraction,Fraction);B)Fractionoperator-(Fraction);

C)Fraction&operator=(Fraction&,Fraction);D)Fraction&operator+=(Fraction&,Fraction);

(25)有如下函数模板:

template

Tcast(Uu){returnu;}

其功能是将U类型数据转换为T类型数据。

已知i为int型变量,下列对模板函数cast的调用中正确的是

A)cast(i);B)cast<>(i);

C)cast(i);D)cast(i);

(26)若磁盘上已存在某个文本文件,其全路径文件名为d:

\ncre\test.txt,下列语句中不能打开该文件的是

A)ifstreamfile("d:

\ncre\test.txt");B)ifstreamfile("d:

\\ncre\\test.txt");

C)ifstreamfile;file.open("d:

\\ncre\\test.txt");D)ifstream*pFile=newifstream("d:

\\ncre\\test.txt");

(27)有如下类定义:

classFoo

{

public:

Foo(intv):

value(v){}//①

~Foo(){}//②

private:

Foo(){}//③

intvalue=0;//④

};

其中存在语法错误的行是

A)①B)②

C)③D)④

(28)有如下类定义:

classPoint

{

intx_,y_;

public:

Point():

x_(0),y_(0){}

Point(intx,inty=0):

x_(x),y_(y){}

};

若执行语句

Pointa

(2),b[3],*c[4];

则Point类的构造函数被调用的次数是

A)2次B)3次

C)4次D)5次

(29)有如下类定义:

classTest

{

public:

Test(){a=0;c=0;}//①

intf(inta)const{this->a=a;}//②

staticintg(){returna;}//③

voidh(intb){Test:

:

b=b;};//④

private:

inta;

staticintb;

constintc;

};

intTest:

:

b=0;

在标注号码的行中,能被正确编译的是

A)①B)②

C)③D)④

(30)有如下程序:

#include

usingnamespacestd;

classA

{

public:

A(){cout<<"A";}

~A(){cout<<"~A";}

};

classB:

publicA

{

A*p;

public:

B(){cout<<"B";p=newA();}

~B(){cout<<"~B";deletep;}

};

intmain()

{

Bobj;

return0;

}

执行这个程序的输出结果是

A)BAA~A~B~AB)ABA~B~A~A

C)BAA~B~A~AD)ABA~A~B~A

(32)有如下程序:

#include

usingnamespacestd;

classBase

{

public:

voidfun1(){cout<<"Base\n";}

virtualvoidfun2(){cout<<"Base\n";}

};

classDerived:

publicBase

{

public:

voidfun1(){cout<<"Derived\n";}

voidfun2(){cout<<"Derived\n";}

};

voidf(Base&b){b.fun1();b.fun2();}

intmain()

{

Derivedobj;

f(obj);

return0;

}

执行这个程序的输出结果是

A)B)

BaseBase

BaseDerived

C)D)

DerivedDerived

BaseDerived

(33)有如下程序:

#include

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

当前位置:首页 > 工程科技 > 电子电路

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

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