下载此文档

C++程序设计练习题与答案.pdf


文档分类:IT计算机 | 页数:约19页 举报非法文档有奖
1/19
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/19 下载此文档
文档列表 文档介绍
该【C++程序设计练习题与答案 】是由【青山代下】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【C++程序设计练习题与答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..C++程序设计练****题一、、()、封装性。()函数。()声明的基类称为虚基类。()声明的函数称为虚函数。。派生类可以定义其基类中不具备的()。,()函数不是类的成员。()关键字可以防止覆盖函数改变数据成员的值。()成员函数。,且节约了()开销。“ClassName”的类,其拷贝构造函数的原型说明是()。、public和protected限定成员的访问权限分别是()、()和()。缺省关键字时成员的访问权限为()。,就要将公共的基类说明为();如果虚基类没有默认构造函数,就必须在每一个派生类的构造函数中都要调用虚基类的()函数。()说明的成员函数。“voidFunName(int=0,double=0,char='x');”,则调用FunName函数的方法共有()种。()实现的;运行时多态性是通过()实现的。++通过()实现编译时多态性,通过()实现运行时多态性。++中,声明类的关键字是()。++模板的关键字是()。“voidFunName(short,int=0,float=;”的方法有()种。++异常的方法:采用()结构。()、()和()限定的成员,其访问权限分别为:公有的、私有的和保护的。缺省关键字时,成员的访问权限为()。++中,处理()的方法是采用try-catch结构。++中,用关键字()说明内置函数。++中,声明友元函数的关键字是()。()时,多重派生过程中公共基类在派生类中就只有一个拷贝了。++中,如果函数调用在前、定义在后,就必须先对函数进行()。、函数体之前加()修饰的成员函数称为类的常成员函数。,这种类只能用作()来派生新类。由于抽象类的特殊性,我们可以说明抽象类的(),但不能说明抽象类的()。“double”、函数名为“virfun”且无参数的纯虚函数的表达形式为()。()。,必须先对函数进行()说明。“ClassN”的类的拷贝构造函数的函数原型说明为()。()的类,必须注意:不能说明抽象类的(),但可说明抽象类的()。<<只能重载为友元函数,重载流插入运算符<<的函数名为()。,就要在类的成员函数名之后、函数体之前加上关键字()。:..:类是对象的(),而对象则是类的()。++中,三种继承方式的说明符号为()、()和(),如果不加说明,则默认的继承方式为()。,就必须使用关键字()把这个公共基类声明为虚基类。()定义为类A的友元函数,则应在类A的声明中加入语句()。()和()。、()、()和语法结构。()可以声明模板,通过关键字()指定函数模板的类型参数。++中两种用户自定义的数据类型:()、()。()。“++”重载为类的成员函数(设类名为ClassName)的形式为()。二、()A)信息隐藏B)数据封装C)定义新类D)()A)一般成员函数B)类的初始化C)对象的初始化D)()调用的。A)类创建时B)创建对象时C)删除对象时D)()情况下适宜采用inline定义内联函数。A)函数体含有循环语句B)函数体含有递归语句C)函数代码少、频繁调用D)函数代码多、,则()A)类A的成员即类B的成员B)类B的成员即类A的成员C)类A的成员函数不得访问类B的成员D)()A)参数B)访问权限C)操作D),基类成员在派生类中的访问权限()A)受限制B)保持不变C)受保护D)++类体系中,不能被派生类继承的有()A)转换函数B)构造函数C)虚函数D),则执行“ClassNx;”语句时将自动调用该类的()A)有参构造函数B)无参构造函数C)拷贝构造函数D)++语言建立类族是通过()A)类的嵌套B)类的继承C)虚函数D)--为类A的成员运算符,若有类A的对象obj,则表达式--obj被C++编译器解释为()。A)--()B)operator--(obj)C)obj::operator--()D)obj:operator--(),其中不正确的是()。A)构造函数可以指定参数,但不能指定函数类型B)一个类可以有多个构造函数C)析构函数不可以指定参数,但可以指定函数类型D),在C++中封装是借助于()实现的。A)结构B)数组C)类D),其中不正确的是()。A)一个类可以有多个构造函数B)析构函数不可以指定函数类型,但可以指定函数参数:..C)一个类只能有一个析构函数D)(),前提为“公有派生”。A)基类的公有成员在派生类中仍然是公有的B)基类的保护成员在派生类中仍然是保护的C)基类的私有成员在派生类中仍然是私有的D),其中错误的是()。A)类A的友元类B的成员函数都是类A的友元函数B)友元函数可以访问该类的私有数据成员C)类与类之间的友元关系可以继承D)++的封装性是借助于()实现的。A)函数B)数组C)结构D)--重载为类ClassN的后置友元运算符,那么,要在类中添加的原型说明为()。A)friendClassNoperator--(ClassN&,int);B)friendClassNoperator--(ClassN&);C)friendClassNoperator--(int);D)friendClassNoperator--();,下列描述中不正确的是()。A)派生类的对象可以赋给基类的对象B)派生类对象的地址可以赋给指向基类的指针C)派生类的对象可以初始化基类的引用D)当基类的指针指向派生类对象时,,不正确的是()。A)基类的保护成员在私有派生类中是私有的B)对基类成员的访问必须没有二义性C)基类的保护成员在保护派生类中是保护的D)基类的保护成员在派生类中是保护的三、程序改错题(改正下列类中的错误){private:intnmember;ClassNpmember;public:ClassN();intClassN(intx);}(){charc[]=newchar[20];deletec;}{private:intn=1;MyClasspO;public:MyClass(inta=0);void~MyClass(inta);};4.:..#include<iostream>usingnamespacestd;voidmain(){int&par=newint[6];deletepar;主函数End!}5.#include<iostream>usingnamespacestd;voidmain(){long&par=newlong[9];deletepar;主函数End!}6.{private:longn;CNpobj;();(intX);};四、分析程序输出题1.#include<iostream>usingnamespacestd;classA{public:};classB:publicA{public:};classC:publicB:..{public:};voidmain(){Cc1;}2.#include<iostream>usingnamespacestd;voidfun(int&a,int&b){intp;p=a;a=b;b=p;}voidexchange(int&a,int&b,int&c){if(a<b)fun(a,b);if(a<c)fun(a,c);if(b<c)fun(b,c);}voidmain(){inta=12,b=89,c=56;exchange(a,b,c);}3.#include<>classTC{private:intnum;public:TC();intTEST(){returnnum;}~TC();};TC::TC(){num=0;}voidmain(){TCtarr[5];}:..4.#include<>classCBase{private:intn;public:CBase(intm=0){n=m;}};classCDrive:Base{private:intn;public:CDrive(){n=0;}CDrive(inta,intb):CBase(a),n(b){}};voidmain(){CBaseb1,b2(99),*pb;CDrivedd(11,22);pb=&b1;pb->print();pb=&b2;pb->print();pb=&dd;pb->print();pb->CBase::print();}5.#include<>classCTest{private:longnum;public:CTest();~CTest();};CTest::CTest(){num=0;}调用析构函数voidmain():..{CTestcobj;退出主函数}6.#include<>{private:intn;(inti){n=i;}operatorint(){returnn;}};voidmain(){CNcobj(123);cout<<cobj<<endl;}7.#include<>voidmain(){intnum=100;int&ref=num;cout<<ref<<endl;ref=ref+100;cout<<num<<endl;num=num+100;cout<<ref<<endl;}8.#include<>ame{private:longnum;ame();~CName();};CName::CName(){num=0;}调用析构函数voidmain(){:..CNamecarr[2];退出}。#include<>classCBase{private:intn;public:CBase(intm=0){n=m;}};classCDrive:Base{private:intn;public:CDrive(){n=0;}CDrive(inta,intb):CBase(a),n(b){}};voidmain(){CBaseba,bb(100),*pb;CDrivedd(123,456);pb=&ba;pb->print();pb=&bb;pb->print();pb=&dd;pb->print();pb->CBase::print();}10.#include<>classCT{private:intn;public:CT(inti){n=i;}operatorint(){returnn;}};voidmain(){CTcObj(1234);cout<<cObj<<endl;:..}五、,请在____处填代码以使其完整。classTC{private:intnum;floatx;public:TC(int,float);TC(TC&);};TC::TC(intn,floatf){num=n;_______;}TC::TC(TC&t){_______;x=;},完成类说明的最小形式(不要求实现成员函数的定义)。#include<>classBase{private:_______;public:_______;};voidmain(){Basebo(6);},程序产生对象tco,且=10,并使用Show()函数输出这个对象的值。ef;},以便完成下列类成员函数的定义。{private:intmn;floatmf;(int=0,float=0);&);};CN::CN(){this->mn=mn;=mf;:..CN::CN(rObj){mn=;mf=.f;},使程序的最终结果为200。#include<>umber{private:intval;umber(inti){val=i;}_______int();};CNumber::operatorint(){_______}classnum:umber{public:num(inti):CNumber(i){}};voidmain(){numn(100);inti=n;cout<<i+n<<endl;},设计出能使用如下测试程序的类:voidmain(){Testto;(300,200);();}输出结果:300-200=:plex{public:Complex();Complex(double);Complex(double,double);plexoperator+(Complex&,Complex&);friendostream&operator<<(ostream&,Complex&);friendistream&operator>>(istream&,Complex&);:..doublereal,imag;};要求:(1)写出该类的所有构造函数的类外定义代码。(2)写出对运算符“+”、“<<”、“>>”进行重载的运算符重载函数的定义。,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。classAbstractC{public:virtualdoublearea()=0;};doubletotal(AbstractC*sa[],intn){doubles=;for(inti=0;i<n;i++)s+=sa[i]->area();returns;}要求:(1)从AbstractC类派生圆类(Circle)、正方形类(Square),圆类新增数据成员半径(r),正方形类新增数据成员边长(a),圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。(2)写出main()函数,计算半径为的圆和边长为的正方形的面积和(必须通过调用total函数计算)。://#include<>{private:intn;(int);voidPrint();};CN::CN(intN){n=N;}::Print(){cout<<n<<endl;}(1)编写一个主程序,产生对象Obj,且使Obj对象中的n成员的值为100,并使用Print()函数输出这个对象中私有成员n的值。(2)在主程序中,创建一动态对象,使该动态对象的数据成员值为2015,并使用指针pObj指向该动态对象,然后输出该动态对象的数据成员的值。://#include<iostream>usingnamespacestd;:..{private:intm;public:CT(int);voidShowM();};CT::CT(intn){m=n;}voidCT::ShowM(){cout<<m<<endl;}(1)编写一个主程序,产生对象mObj,且使mObj对象中的m成员的值为11,并使用ShowM()函数输出这个对象中私有成员m的值。(2)在主程序中,创建一动态对象,使该动态对象的数据成员值为126,并使用指针pObj指向该动态对象,然后输出该动态对象的数据成员的值。、矩形和圆的总面积的统计并输出结果。三角形、矩形和圆类的类名分别为T、R和C。T类必须以S类作基类,R类必须从T类派生,C类必须以S作基类。Shape类的定义如下:classS{private:intx,y;public:S(inta=0,intb=0):x(a),y(b){}virtualintArea()=0;};不必建立工程,将所有代码都放在一个源文件中。在主函数中,必须调用下列Sum函数来统计各类图形面积的总和。intSum(S*s[],intn){intsum=0;for(inti=0;i<n;i++)sum+=s[i]->Area();returnsum;}:..一、(ClassName&);-()=0;(ClassN&);<<();:...++(int);二、单选题1~5:D6~10:ABBBB11~15:ACCBC16~20:CDADD三、程序改错题(改正下列类中的错误)1.“ClassNpmember;”“ClassN*pmember;”“intClassN(intx);”“ClassN(intx);”“}”“};”2.“charc[]=newchar[20];”“char*c=newchar[20];”“deletec;”“delete[]c;”3.“intn=1;”“intn;”“MyClasspO;”“MyClass*pO;”“void~MyClass(inta);”“~MyClass();”4.“int&par=newint[6];”“int*par=newint[6];”“deletepar;”“delete[]par;”“主函数End!”“主函数End!”5.“long&par=newlong[9];”“long*par=newlong[9];”“deletepar;”“delete[]par;”“主函数End!”“主函数End!”6.“CNpobj;”“CN*pobj;”“(intX);”“CN(intX);”四、=89,b=56,c=:..、=fnum=(intm)(10)(),floatbmefCTN&,floatmfthis->&.:..classTest{private:intx,y;public:voidInit(inta,intb){x=a;y=b;}};::Complex(){real=0;imag=0;}Complex::Complex(doubler){real=r;}Complex::Complex(doubler,doublei){real=r;imag=i;}Complexoperator+(Complex&plex&c2){Complexc;=+;=+;returnc;}ostream&operator<<(ostream&plex&c){returnoutput;}istream&operator>>(istream&plex&c){input>>>>;returninput;}9.#include<iostream>usingnamespacestd;classAbstractC{public:virtualdoublearea()=0;:..};doubletotal(AbstractC*sa[],intn){doubles=;for(inti=0;i<n;i++)s+=sa[i]->area();returns;}classCircle:publicAbstractC{private:doubler;public:Circle(doubleR={r=R;}voidSetR(doubleR){r=R;}doublearea(){return*r*r;}};classSquare:publicAbstractC{private:doublea;public:Square(doubleA={a=A;}voidSetR(doubleA){a=A;}doublearea(){returna*a;}};voidmain(){AbstractC*pa[2];pa[0]=newCircle;pa[1]=newSquare;cout<<total(pa,2)<<endl;delete(Circle*)pa[0];delete(Square*)pa[1];}(){CNObj(100);();CN*pObj=(2015);pObj->Print();deletepObj;:..}(){CTmObj(11);();CT*pObj=newCT(126);pObj->ShowM();deletepObj;}12.#include<iostream>usingnamespacestd;classS{private:intx,y;public:S(inta=0,intb=0):x(a),y(b){}virtualintArea()=0;//virtual~S(){}};intSum(S*s[],intn){intsum=0;for(inti=0;i<n;i++)sum+=s[i]->Area();returnsum;}classT:publicS{protected:inth,w;public:T(intH,intW){h=H;w=W;}intArea(){returnh*w*;}};classR:publicT{public:R(inth,intw):T(h,w){}intArea(){returnh*w;}};classC:publicS{protected:intr;:..public:C(intR){r=R;}intArea(){returnr*r*;}};voidmain(){S*s[3];s[0]=newT(3,4);s[1]=newR(2,4);s[2]=newC(5);总面积=//for(inti=0;i<3;i++)deletes[i];delete(T*)s[0];delete(R*)s[1];delete(C*)s[2];}

C++程序设计练习题与答案 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数19
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小1.31 MB
  • 时间2024-04-09