c++练习题(带答案)_第1页
c++练习题(带答案)_第2页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.一、选择题C+语言属于( C)。A) 自然语言B) 机器语言C)面对对象语言D) 汇编语言下面选项中不属于面对对象程序设计特征的是(C) 。A)继承性B)多态性C)相像性 D)封装性可用作 C+语言用户标识符的一组标识符是( B )。A) voiddefine+WORDB) a3_b3_123YNC) for-abcCaseD) 2aDOsizeof4.假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素 a21的值为(A)。A) 0B) 4C) 8D) 6下列状况中,哪一种状况不会调用拷贝构造函数 (B)A)用派生类的对象去初始化基类对象时 B)将类的一个对象赋值给

2、该类的另一个对象时 C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时以下哪一关键字可用于重载函数的区分(C) A)externB)staticC)constD)virtual下列有关数组的叙述中,正确的是(B) A)C+中数组的存储方式为列优先存储 B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从 1 开头,至数组长度n 结束D)数组指针的语法形式为:类型名 *数组名下标表达式;下列有关继承和派生的叙述中,正确的是( C) A)派生类不能访问通过私有继承的基类的疼惜成员 B)多继承的虚基类不能够实例化 C)假如基类没有默认构造函

3、数,派生类就应当声明带形参的构造函数 D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现实现运行时多态的机制是(A)A)虚函数B)重载函数C)静态函数D)模版函数若有下面的函数调用:fun(a+b, 3, max(n-1, b);其中实参的个数是(A)A)3B)4C)5D)6下列关于 this 指针的说法正确的是(B)A)this指针存在于每个函数之中B)在类的非静态函数中 this 指针指向调用该函数的对象C)thisD)this 指针是指向类的函数成员的指针在下列关于 C+函数的叙述中,正确的是(C) A)每个函数至少要有一个参数B)每个函数都必需返回一个值C)函数在被调用之

4、前必需先声明 D)函数不能自己调用自己下列运算符中,不能重载的是 (C)A)&B)!=C).D)-下面程序的输出结果是(B)#include using namespace std;int i = 0;int fun(int n)static int a = 2;a+;return a+n;void main()int k = 5;int i = 2;k += fun(i);k += fun(i);cout k;A)13B)14C)15D)16下面的程序段的运行结果为(D)char str = job, *p = str;cout *(p+2) endl;A)98B)无输出结果C)字符b的地址

5、D)字符b下面程序的输出结果是(C)#include using namespace std;class Apublic:A (int i) x = i; void dispa () cout x “,”; private :int x ;class B : public Apublic:B(int i) : A(i+10) x = i; void dispb() dispa(); cout x endl; private :int x ;void main()B b(2);b.dispb();A)10,2B)12,10C)12,2D)2,2下面程序的输出结果是(C)#include usin

6、g namespace std;class Basepublic:Base(int i) cout i; Base () ;class Base1: virtual public Basepublic:Base1(int i, int j=0) : Base(j) cout i; Base1() ;class Base2: virtual public Basepublic:Base2(int i, int j=0) : Base(j) cout i; Base2() ;class Derived : public Base2, public Base1public:Derived(int a

7、, int b, int c, int d) : mem1(a), mem2(b), Base1(c),Base2(d), Base(a) cout b; private:Base2 mem2;Base1 mem1;void main() Derived objD (1, 2, 3, 4); A)134122B)123412C)14302012D)143212下面程序的输出结果是(C)#include using namespace std;class Basepublic:virtual void f() cout “f0+”; void g() cout “g0+”; ;class Der

8、ived : public Basepublic:void f() cout “f+”; void g() cout f();p-g(); A)f+g+B)f0+g+C)f+g0+D)f0+g0+下面程序的输出结果是(C)#include using namespace std;class Samplefriend long fun (Sample s)if (s.x 2) return 1;return s.x * fun(Sample(s.x-1);public:Sample (long a) x = a; private:long x;void main()int sum = 0;for

9、 (int i=0; i4; i+)sum += fun(Sample(i);cout sum;A)12B)16C)10以下程序的输出结果是:(D )#include using namespace std;intfun(char *s)char *p=s;while (*p!=0)p+;return (p-s);void main() coutfun(abc)endl;D)34A0B. 1C. 2D. 3有如下程序段:int i=1;while(1) i+;if (i=10) break; if(i%2=0) coutGetValue()D) x.GetValue( )假定 AA 为一个类,

10、int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A)。A) int AA:a( )B) int AA:a()C) AA:a()D) AA:int a()有如下程序: #include using namespace std;class Testpublic:Test()Test()cout#;int main()Testtemp2, *pTemp2;return 0;执行这个程序输出星号(#)的个数为(B )。A)1B)2C)3D)4有如下程序: #include using namespace std;class MyClasspublic:MyClass(i

11、nt i=0)cout1; MyClass(const MyClass&x)cout2;MyClass& operator=(const MyClass&x)cout3; return *this;MyClass()cout4;int main()MyClass obj1(1),obj2(2),obj3(obj1);obj1=obj2;return 0;运行时的输出结果是( A)。A)1123444B)11114444C)121444D)11314444有如下程序: #include using namespace std; class pointpublic:static int numbe

12、r;public:point() number+;point() number-;int point:number=0;void main() point *ptr; point A,B;point *ptr_point=new point3;ptr=ptr_point;point C; delete ptr;coutpoint:number;程序结果为(A)A)3B)4C)6D)7友元运算符 obj+被 C+编译器解释为( D)。operator+(obj)B. operator+(obj,0)obj.operator+( )D. obj.operator+(0)二、程序填空1用递归法求从1

13、到n的立方和:f(1)=1(n=1)f(n)=f(n-1)+n3#includeusingnamespacestd;intf(int);intmain()intn,s;coutn;s=f(n);coutTheresultissendl;return0;intf(intn)递归法求立方和函数if(n=1)return1;elsereturn(f(n-1)+n*n*n);3. 请将下列程序补充完整,使得输出结果为“Destructor Derived Destructor Base”。#include using namespace std;class Basepublic:virtualBase

14、 () cout “Destructor Base” endl; ;class Derived : public Basepublic:Derived() cout “Destructor Derived” endl; ;void main ()Base *pBase = new Derived;delete pBase;1.#include #include usingnamespacestd;classCDcharname20;intnumber;voidInit(char*aa,intbb)number=bb;CDdx;char* Getname () return name; intG

15、etnumber()returnnumber;voidOutput()coutnamenumberendl;voidmain()CDdy;dx.Init(唱歌祖国,30);,3*dx.Getnumber ()+5);dx.Output();dy.Output();唱歌祖国 30义勇军进行曲 95#include usingnamespacestd;intf(inta)return+a;int g(int& a) return+a;voidmain()intm=0,n=0;m+=f(g(m);n+=f(f(n); coutn=nendl;#includeusing namespace std;

16、classDemopublic:Demo()coutdefaultconstructorn;Demo(constDemo&x)coutcopyconstructorn;DemouserCode(Demob)Democ(b);returnc;voidmain()Demoa,d;coutcallinguserCode()n;d=userCode(a);Demo(Demo(constDemo&x)被调用的次数分别是多少次?五、编写程序1y=1!+2!+3!.n! ,n数并输出结果。大值与最小值。测试结果。有参数的构造函数及复制构造函数下面关于类概念的描述中,(D)是错误的。类是抽象数据类型的实现具有

17、共同行为的若干对象的统一描述体C)类是创建对象的样板D)类就是C语言中的结构体类型D面对对象程序设计思想的主要特征中不包括 (D) 。A)封装性B)多态性C)继承性分解,逐步求精D01|11|1|1在C+中,函数原型不能标识 () 。函数的返回类型B)函数参数的个数C)函数参数类型数的功能D01|11|1|1有关析构函数的说法不正确的是 ()。析构函数有且仅有一个B) 析构函数和构造函数一样可以有形参C) 析构函数的功能是用来释放一个对象D) 析构函数无任何函数类型B01|11|2|1已知X类.则当程序执行到语句,Xarray3;时,调用了(D)次构造函数。A)0B)1C)2D)3D01|13

18、|1|1类定义的内容允许被其他对象无限制地存取是(C)。private 部分B)protected 部分C)public 部分D)以上都不对C01|01|2|1关于new运算符的下列描述中,(D)是错误的.。它可以用来动态创建对象和对象数组DELETE使用它创建对象时要调用构造函数使用它调用对象数组时不许指定初始值D01|01|2|1对于下面程序段,表达式正确的是(BclassBasepublic:intb;classBase1:publicbase;classBase2:publicbase;classDerived:publicbase1,publicbase2public:intfun(

19、);Derivedd;A) d.Base1:bB)d.Base:bC) d.bD) d.Base:fun()B01|12|1|1p.ap 的基类成员 aa(D)。A)B)公有继承的私有成员C)D)公有继承的公有成员D下列关于C+类的描述中错误的是 ( C) 。A)类与类之间可以通过一些手段进行通信和联络类用于描述事物的属性和对事物的操作类与类之间必需是公正的关系,类与类之间可以通过封装而具有明确的独立性C01|12|1|1下列描述中哪个是正确的(BA)私有派生的子类无法访问父类的成员A的私有派生子类的派生类C无法初始化其祖先类A类A的成员对类C是不行访问的私有派生类不能作为基类派生子类私有派生

20、类的全部子孙类将无法连续继承该类的成员B01|11|1|1下列关于构造函数说法不正确的是()。构造函数必需与类同名构造函数可以省略不写C)构造函数必需有返回值构造函数中可以对类中的成员进行初始化C01|13|1|1假如友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是(D )。A)一元运算符B)二元运算符C)选项A)和选项B)都可能D)重载错误D01|14|1|1在重载一个运算符时,假如其参数表中有一个参数,则说明该运算符是( D )。A)一元成员运算符B)二元成员运算符一元友元运算符选项C)都可能D01|12|1|1一个类的友元函数能够访问该类的(D)。私有成员B)疼惜成员C)

21、公有成员全部成员D下列关于类定义的说法中,正确的是(A)。类定义中包括数据成员和函数成员的声明类成员的缺省访问权限是疼惜的数据成员必需被声明为私有的D)成员函数只能在类体外进行定义A01|14|1|1通过运算符重载,可以转变运算符原有的(A)。A)操作数类型B)操作数个数C)优先级D)结合性A01|14|1|1在C+语言中,数据封装要解决的问题是(D)。数据的规范化B)便于数据转换避开数据丢失D)防止不同模块之间数据的非法访问D01|13|1|1对类成员访问权限的把握,是通过设置成员的访问把握属性实现的,下列不是访问把握属性的是(D)。A)公有类型B)私有类型C)疼惜类型D)友元类型D01|1

22、1|1|1在类的定义中,用于为对象支配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是(C)。A)友元函数B)虚函数C)构造函数D) 析构函数C01|11|1|1类的析构函数的作用是(D)。一般成员函数的初始化初始化C)对象的初始化D)删除类创建的对象D01|13|1|1下列说法正确的是(B)。内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方地方类的内联函数必需在类体内定义inlineB01|12|1|1下列对派生类的描述中,错误的是(D)。一个派生类可以作为另一个派生类的基类派生类至少有一个基类派生类的成员除了自己的成员外,还包含了它的基类的成员派生类中继承的基类

23、成员的访问权限到派生类保持不变D01|12|1|1运算符的重载是对已有的运算符赐予多重含义,因此( A)。可以对基本类型(如int 类型)的数据,重新定义“+”运算符的含义可以转变一个已有运算符的优先级和操作数个数C+中已经有的运算符,不能定义新运算符D)C+中已经有的全部运算符都可以重载A01|13|1|1假如类A被说明成类B的友元,则(D )。A)类A 的成员即是类B的成员B) 类B的成员即是类A的成员C)类A的成员函数不得访问类B的成员D)类B不愿定是类 A的友元D01|13|1|1不能作为重载函数的调用的依据是(D)。A)参数的个数B) 参数的类型C)函数的类型D)函数的名称D01|1

24、3|1|1在C+语言的面对对象设计框架中,类是程序的基本组成单元。类01|13|1|1继承的方式的公有继承、私有继承和疼惜继承三种。疼惜继承01|13|1|1在用class定义一个类时,数据成员函数的默认访问权限是私有的)。私有的01|13|1|1类的构造函数是在定义对象时调用的。定义对象01|13|1|1类模板的使用实际上是将类模板实例化成一个具体的( 对象)。对象01|13|1|1假如类B继承了类A,则称类A为类B的基类,类 B称为类A 的(派生类)。派生类01|13|1|1假如要把返回值为void的函数A声明为B类的友元数,则应在类B的定义中加入语句是(12)。02|10|1|1有如下定

25、义:classMAint value; public:MA(int n=0)value=n;MA*ta,tb;其中MA类的对象名标识符是 (tb) 。tb02|12|1|1用来派生新类的称为 (基类),而派生出的新类称为它的子类或派生类。基类02|12|1|1面对对象的程序设计的主要特征是继承性、封装性和多态性。封装性02|10|1|1向对象的模型中,最基本的概念是对象和 ( 类) 。类03|14|1|1通过使用new和delete两个运算符进行的支配为静态存储支配。()F03|14|1|1重载的运算符保持其原有的操作符个数、优先级和结合性不变。()T03|10|1|1在面对对象方法中,类之间

26、共享属性和操作的机制称为 多态 性 。()F03|12|1|1可以用p.a的形式访问派生类对象P的基类成员a,其中a是公有继承的公有成员。()TC+语言相对于C语言的最根本的变化是引进了类和对象的概念。()T03|10|1|1类的析构函数的作用是删除类创建的对象。()T02|13|1|2动态支配内存空间操作符”new”和()使用时必需成对毁灭。delete02|12|1|2用以说明类中疼惜成员的关键字是()。protected02|11|1|2对于任意一个类,析构函数的个数最多为()个 。102|08|1|2若有以下定义语句:Structdatainti;char;doublef;b;则结构体

27、变量占用的内存字节数是()。3.14*r*r03|02|1|2分号是 C+语句的必要组成部分。()T03|12|2|2公有派生时基类中全部成员在公有派生类中保持各个成员的访问权限()T04|12|2|2下列程序中横线处正确的语句应当是。using namespace std; classBasepublic; voidfun()cout “Base:fun” endl;classDerived:publicBasepublic:voidfun() /funcout“Derivedfun” endl;004|11|2|2写出下列程序的运行结果。#includeclassAA()cout1;A()cout2;classB:publicApublic:B()cout3;B()cout4;voidmain()Bb;132404|09|2|2 下列程序的执行结果为。voidmian()int n=10; int* pn=&n; int*&rn=pn;(*pn)+;coutn=nendl; (*rn)+; n=11 n=12.05|08|2|2定义描述复数的结构体变量,并实现复数的输入和输出.设计 3 个函数分别完成复数的加法、减法运算。编写主函数验证复数的运算是否正确。#includestru

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论