C++总复习题.docx
- 文档编号:11703340
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:19
- 大小:21.66KB
C++总复习题.docx
《C++总复习题.docx》由会员分享,可在线阅读,更多相关《C++总复习题.docx(19页珍藏版)》请在冰豆网上搜索。
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*d2=newPrinted2(99)delete.d2 76根据不同的输出结果,在函数Tone中填入正确语句。 #include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题