C++复习题.docx

上传人:b****8 文档编号:11264810 上传时间:2023-02-26 格式:DOCX 页数:23 大小:21.73KB
下载 相关 举报
C++复习题.docx_第1页
第1页 / 共23页
C++复习题.docx_第2页
第2页 / 共23页
C++复习题.docx_第3页
第3页 / 共23页
C++复习题.docx_第4页
第4页 / 共23页
C++复习题.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C++复习题.docx

《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(23页珍藏版)》请在冰豆网上搜索。

C++复习题.docx

C++复习题

01C++程序的头文件和源程序文件扩展名分别为________和________。

02在C++程序中,使用基本输入/输出流需要包含的头文件是____________。

03字符串类型的变量一般用_________和__________类型的变量表示。

04一个二维字符数组a[10][20]能够存储_________个字符串,每个字符串的长度最多为______。

05C++语言中,唯一的三目运算符是______________.

06设intx=10,则表达式x<=10?

20:

30的值分为_________

07数组元素a[i]是该数组中的第_________个元素。

08在C++程序中,一个数组的名字实际上是指向该数组___________元素的指针,并且在任何时候都不允许修改。

09除了在___________和___________的情况下,定义引用变量必须初始化。

10执行___________操作将动态分配p所指向的数据空间,执行___________操作将释放由p所指向的动态分配的数据空间。

答案01.h.cpp02iostream.h03字符指针字符数组04101905?

062007i+108第一个09函数参数函数返回值

10newp;deleteol

11下面程序是计算1000以内能被3整除的自然数之和。

请完成下列程序。

#include

voidmain()

{

intx=1,sum;

___________;

while(true)

{

if(___________)break;

if(___________)sum+=x;

x++;

}

}

答案sum=0x>1000x%3==0

12下列程序求解矩形两条对角线上的元素之和,请完成下列程序。

#include

voidmain()

{

inti,j,sum1,sum2;

inta[][4]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};

sum1=0;

___________;

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

for(j=0;j<4;j++)

{

if(___________)

sum1+=a[i][j];

if(___________)

sum2+=a[i][j];

}

cout<

}

答案sum2=0i==ji+j==3

13下列程序计算由0到9之间的任意3个不相同的数字组成的三位数共有多少种不同的组合方式。

请完成下列程序。

#include

voidmain()

{

inti,j,k,count=0;

for(i=9;i>=1;i--)

for(j=9;j>=0;j--)

if(___________)continue;

else

for(k=0;k<=9;k++)

if(___________)count++;

cout<

}

答案i==j(k!

=i)&&(k!

=j)

14在C++程序中,每个变量都必须遵循___________的原则。

15具有相同函数名但具有不同参数表的函数成为___________。

16一个函数可以直接或间接调用自己,这种函数叫做___________。

17假设有如下函数定义:

voidFun(intx,inty=100);则语句Fun(5)与语句___________等价。

18在函数原型声明中,必须声明函数参数的类型,但可以省略___________.

19静态整型变量的初始值是___________。

20假定一个函数参数说明为intx[],则等价的指针参数说明为___________。

21假定一个函数参数说明为intx[][N](N是常数),则等价的指针参数说明为___________。

答案14先定义后使用15重载函数16递归函数17Fun(5,100)18参数名

19020int*x21int(*x)[N]

22下面的函数Fun未使用中间变量实现了对两个数的交换,请完成下列函数的定义。

voidFun(int&x,int&y)

{

x+=y;

y=_________;

___________;

答案x-yx=x-y

23下面是一个求数组元素之和的程序。

主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。

函数TotalSum计算数组各元素之和。

请完成下列程序。

#include

______________;

voidmain()

{

inta[5]={2,3,6,8,10};

________________;

Total=TotalSum(a,5);

cout<<”Sumofarray:

”<

}

intTotalSum(intarray[],intlen)

{

____________________;

for(inti=0;___________;i++)

__________________;

returnsum;

}

答案intTotalSum(int*,int);intTotalintsum=0i

24类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_________,共同的行为被描述为类中的___________。

25对类中成员函数和属性的访问是通过______、________、________这三个关键字来控制的。

26一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为_______权限,而把成员函数(方法)定义为____________权限。

27在结构定义中,数据成员和成员函数的默任权限是________。

在类定义中,数据成员和成员函数的默任权限是________。

28类中构造函数有_________个,析构函数有_______个。

29在定义类的对象时,C++程序将自动调用该对象的______函数初始化对象自身。

30在撤消类的对象时,C++程序将自动调用该对象的______函数。

31_________运算符对指定类型对象动态分配内存并返回该类型的_______。

32在类中定义和实现的函数称为__________。

33非成员函数应声明为类的_________才能访问这个类的private成员。

34若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句__________

35若要把函数voidFriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句_________________。

答案24数据成员成员函数25publicprotectedprivate26privatepublic

27publicprivate28一或多一29构造30析构31new指针

32内联函数(也称内置函数)33友元函数34friendclassFriednFunctiou();

35friendvoidFriendFunction();

36在下面程序的横线处填上适当的语句,使该程序执行结果为10。

#include

classMyClass

{

public:

_____________;//为x置值

_____________;//取x值

private:

intx;

};

voidmain()

{

MyClassmy(10);

cout<

}

答案MyClass(inti){x=i;}intGetNUm(){returnx;}

37下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。

classMyClass

{

public:

enumWeek{Sun,Mon,Tue,Wed,Thu,Fri,Sat};

Weekweek;

};

voidfun(MyClass&my)

{//将对象my的week赋值为所定义的枚举类型值为3的枚举量

___________=____________;

}

答案my.weekWed

38完成下面的定义。

classMyClass

{

public:

MyClass(){x=0;}

______intGetNum(______my);

private:

intx;

};

intGetNum(_______my)

{

returnmy.x;

}

答案friendMyClassMyClass

39在C++语言中,每个类都有一个隐含的指针叫做_____指针,该指针指向_________。

40当一个类对象的成员函数被调用时,该成员函数的_______指向调用它的对象。

41指向数组的指针是指_________

42指针数组是指____________

43有如下定义语句:

MyClass*p[10];则当指针数组p离开它的作用域时,系统自动调用该类析构函数________次。

44有如下定义语句:

MyClassp[10];则系统自动调用该类构造函数_______次,则当对象数组p离开它的作用域时,系统自动调用该类析构函数________次。

答案39this调用它的对象40this41该指针指向一个数组

42数组的每个元素都是指针430441010

45下面的类定义了拷贝初始化构造函数,请完成该类的定义和实现。

classMyClass

{

public:

MyClass(intxx=0,intyy=0){X=xx;Y=yy;}

____________________;//拷贝初始化构造函数

private:

intX,Y;

};

MyClass:

:

______________//拷贝初始化构造函数的实现

{

X=____________;

______________;

}

答案MyClass(MyClass&p)MyClass(MyClass&p)p.XY=p.Y

46下面程序在构造函数和析构函数申请和释放类的私有成员,请完成该类的实现。

classMyClass

{

public:

MyClass(inta);

~MyClass();

private:

int*X;

};

MyClass:

:

MyClass(inta)

{

_______________;

}

MyClass:

:

~MyClass()

{

______________;

}

答案X=newint(a)deleteX

47重载运算符的函数名由关键字__________引出。

48单目运算符作为类成员函数重载时________形参;双目运算符作为_________重载时需声明其右操作数,作为_________重载时需声明全部操作数。

49利用成员函数对二元运算符重载,其左操作数为________,右操作数为________。

答案47operator48没有类成员函数友元函数49this指针成员函数参数

50下列程序定义了一实部为real,虚部为imag的复数类complex,并在类中重载了复数的+、-操作。

请将下列程序补充完整。

classComplex

{

public:

Complex(doubler=0.0,doublei=0.0){_________}

_________operator+(Complex&);

_________operator–(Complex&,Complex&);

private:

doublereal,imag;

};

_________operator+(Complex&c)

{

returnComplex(________);

}

________operator–(Complex&c1,Complex&c2)

{

returnComplex(________________);

}

答案real=r;imag=i;ComplexfriendComplexComplexComplex:

:

real+c.real,imag+c.imagComplexc1.real+c2.real,c1.imag+c2.imag

51如果类Alpha继承了类Beta,则类Alpha称为_____类,类Beta称为_____类。

52若类Y是类X的私有派生类,类Z是类Y的派生类,则类Z_______访问类X的保护成员和公有成员。

53当用protected继承从基类派生一个类时,基类的public成员成为派生类的_______成员,protected成员成为派生类_________成员。

54多重继承情况下,基类的构造函数的执行顺序取决于______派生类时所指定的各基类的顺序。

55在建立派生类的对象时,构造函数的执行顺序为:

先执行_________,再执行___________,最后执行____________。

56在结束派生类的对象时,析构函数的执行顺序为:

先执行_________,再执行___________,最后执行____________。

57构造函数________被继承,析构函数_______被继承。

58在派生类中使用基类的成员,可以显示地使用_________来使用基类成员。

59多重继承时,多个基类中拥有一个同名成员,则________用调整访问权限确定对该成员的访问。

60指向基类对象的指针变量也可以指向___________的对象。

61一个指向基类的指针,通过______________可以置给一个指向派生类的指针,但程序员必须保证该基类指针实际是指向派生类对象。

62____________类的对象可作为基类的对象处理。

答案51派生基52不能53protectedprotected54定义55基类构造函数

对象成员构造函数派生类的构造函数56派生类的析构函数对象成员析构函数

基类析构函数57不能不能58基类名限定59不能60派生类61强制类型转换

62派生

63在划线处填上适当的语句,完成下列程序。

#include

classPoint

{

public:

Point(doublea,doubleb,doublec){________________________}

doubleGetx(){returnX;}

doubleGety(){returnY;}

doubleGetz(){returnZ;}

private:

_______________

protected:

________________

};

classLine:

__________Point

{

public:

Line(doublea,doubleb,doublec,doubled)_____________{______________}

voidshow()

{

cout<

cout<

cout<

cout<

}

private:

doubleK;

};

voidmain()

{

Lineobj(1.2,3.4,5.6,7.8);

obj.show();

}

答案X=a;Y=b;Z=c;doubleX;doubleY,Z;protedtedPoint(a,b,c)k=d;

64根据基类的定义和测试程序,完成下面派生类的定义。

ClassPoint

{

public:

Point(inti=0,intj=0){X=i;Y=j;}

VoidMove(intxOff,intyOff){X+=xOff;Y+=yOff;}

intGetX(){returnX;}

intGetY(){returnY;}

private:

intX,Y;

};

classRectangle:

privatePoint

{

public:

Rectangle(intx,inty,intw,inth)___________{_____________}

voidMove(intxOff,intyOff){___________________}

intGetX(){________________________}

intGetY(){________________________}

intGetW(){_______________}

intGetH(){________________}

private:

intW,H;

};

#include

voidmain()

{

Rectanglerect(1,2,3,4);

rect.Move(5,6);

cout<<"Thedataofrect(X,Y,W,H):

("

<

<

}

答案Point(s,y)W=w;H=hPoint:

:

Move(xoff,yoff)returnPoint:

:

GetX();

returnPoint:

:

GetY()returnW;returnH;

65在横线处填上适当的语句,完成程序。

#include

classA

{

public:

voidf(inti){cout<

voidg(){cout<<"g"<

};

classB:

privateA

{

public:

voidh(){cout<<"h"<

_______________________

};

voidmain()

{

Bd1;

d1.f(6);

______.h();

}

答案voidf(inti){A:

:

f(i);}d1

66在下列给定的继承结构中,判断横线行语句是否有二义性。

classBase1

{

public:

intx;

intfun1();

intfun2();

intfun2(int);

intfun3();

};

classBase2

{

public:

charfun2();

intfun3();

private:

intx;

intfun1();

};

classDerived:

publicBase1,publicBase2

{

};

voidmain()

{

Derivedd;

d.x=1;//__________

d.fun1();//__________

d.fun2();//__________

d.fun2(10);//_________

d.fun3();//_________

}

答案有有有有有

67动态联编中直到________时才能确定调用哪个函数;而静态联编则是在______时进行的。

68静态联编所支持的多态性称为______多态性,动态联编所支持的多态性则称为_____多态性,运行多态性由______来支持。

69对虚函数使用对象指针或引用调用,系统使用__________联编;使用对象调用时,系统使用________联编。

70动态联编时在________支持下,通过__________调用来实现的。

71在一个成员函数内调用一个虚函数时,对该虚函数的调用进行____联编。

72C++中不支持虚构造函数,但______虚析构函数。

73在类定义中,将_______置于虚函数的函数原型的末尾可以将虚函数声明为存虚函数。

74带有_________的类称为抽象类,它只能作为_______来使用。

答案67运行编译68编译运行虚函数69动态静态70虚函数指针或引用

71动态72支持73=074纯虚函数基类

75下列程序运行结果如下:

Derive1’sPrint()called.88

Derive2’sPrint()called.99

根据结果将程序补充完整。

#include

classBase

{

public:

Base(inti){b=i;}

_____________;

protected:

intb;

};

classDerived1:

publicBase

{

public:

_______________

voidPrint()

{

cout<<”Derive1’sPrint()called.”<

}

};

classDerived2:

publicBase

{

public:

Derived2(inti):

Base(i){}

voidPrint()

{

____________________________________

}

};

voidfun(__________)

{

obj->Print();

}

voidmain()

{

Base*d1=newDerived1(88);

_______________________;

fun(d1);

fun(d2);

deleted1;

_________________;

}

答案virtualvoidPrint()=0Derive(inti):

Base(i){}

cout<<”Derive2’sPrint()called”<

Base*objBase*

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1