• 即有分期副总裁刘铮解读《中国新时代蓝领消费与成长白皮书》 2018-11-26
  • 回复@老老保老张工:计划不要批准?那不还是你自己做主?有必要走形式么? 2018-11-26
  • 广东省人大开展学习贯彻习近平总书记重要讲话精神专题集中学习研讨 2018-11-26
  • 我相信“交警雨中护送高考生”是真,“交警雨中护送高考生”反被该高考生家长投诉是假。 2018-11-26
  • 体彩11选5网上投注平台:2018年12月计算机二级C++考前冲刺练习题及答案(3)

    全国计算机等级考试NCRE考试网 鲤鱼小编 更新时间:2018-11-21

          距离2018下半年的计算机二级考试还有一段时间,想必考生也在紧张的复习当中,鲤鱼小编建议考生在考前冲刺阶段多做练习题,有助于巩固知识点哦。下面是一套考前冲刺练习题,一起来测试一下吧!

        选择题

      1.可以用P.a的形式访问派生类对象P的基类成员a,其中a是(  )。

      A.私有继承的公有成员

      B.公有继承的私有成员

      C.公有继承的?;こ稍?

      D.公有继承的公有成员

      2.下面程序的运行结果为(  )。

      #include

      classA

      

      intnum;

      public:

      A(inti)num=i;)

      A(A&a)num=a.num++;

      voidprint()cout<  ;

      voidmain()

      

      Aa(1),b(a);

      a.print();

      b.print();

      

      A.11B.12

      C.21D.22

      3.设有定义charstr[80];以下不能将输入数据first\nsecond\n读取到数组str中的语句是(  )。

      A.cin.get(str,strlen(str));

      B.cin.getline(str,strlen(str));

      C.cin>>str;

      D.cin.read(str,strlen(str));

      4.下列程序的输出结果为(  )。

      #include

      classTestClass

      

      public:

      TestClass()val++;

      static,intval;

      ;

      intTestClass::val=0;

      voidmain()

      

      TestClasscsl;

      cout<  TestClasscs2;

      TestClasscs3,cs4;

      cout<  

      A.O3

      B.13

      C.14

      D.24

      5.有以下类定义:

      classMyClass

      

      private:

      intid;

      chargender;

      char*phone;

      public:

      MyClass():id(0),gender(’#’),phone(NULl)

      MyClass(intn0,charge=’#’,char*ph=NULL)

      id=no;gender=ge;phone=ph;

      ;

      下列类对象定义语句中错误的是(  )。

      A.MyClassmyObj;

      B.MyClassmyObj(11,"13301111155");

      C.MyClassmyObj(12,’m’);

      D.MyClassmyObj(12);

      6.下列是关于派生类声明的开始部分,其中正确的是(  )。

      A.classvirtualB:publicA

      B.virtualclassB:publicA

      C.classB:publicAvirtual

      D.classB:virtualpublicA

      7.如果类A被说明成类B的友元,则(  )。

      A.类A的成员即类B的成员

      B.类B的成员即类A的成员

      C.类A的成员函数不得访问类B的成员

      D.类B不一定是类A的友元

      8.下列关于虚基类的描述,错误的是(  )。

      A.设置虚基类的目的是为了消除二义性

      B.虚基类的构造函数在非虚基类之后调用

      C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用

      D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数

      9.下列关于多态性的描述,错误的是(  )。

      A.C++语言中的多态性分为编译时的多态性和运行时的多态性

      B.编译时的多态性可通过函数重载实现

      C.运行时的多态性可通过模板和虚函数实现

      D.实现运行时多态性的机制称为动态绑定

      10.若有如下程序:

      #include

      usingnamespacestd;

      classTestClassl

      

      private:

      inta;

      public:

      TestClassl(inti)

      

      a=i:

      

      voiddisp(  )

      

      cout<  

      ;

      classTestClass2

      

      private:

      intb:

      public:

      TestClass2(intj)

      

      b=j;

      

      voiddisp()

      

      cout<  

      ;

      classTestClass3:publicTestClass2,publicTestClassl

      

      private:

      intc;

      public:

      TestClass3(intk):TestClass1(k-2),TestClass2(k+2)

      

      c=k:

      

      voiddisp()

      

      TestClasssl::disp();

      TestClasss2::disp();

      cout<  

      ;

      intmain()

      

      TestClass30bj(10);

      obj.disp();

      return0;

      

      程序执行后的输出结果是(  )。

      A.10,10,10

      B.10,12,14

      C.8,10,12

      D.8,12,10

      11.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD(  )。

      #include

      usingnamespacestd;

      classA

      public:A()cout<<’A’;

      ;classB:

      public:B()cout<<’B’;

      ;classC:virtualpublicA

      public:C()cout<<’C’;

      ;classD:publicB,publicD

      public:D()cout<<’D’;

          ;voidmain()D04;

      A.publicA

      B.privateA

      C.protectedA

      D.virtualpublicA

      12.有如下程序:

      #include

      usingnamespacestd;

      classAA

      intn;

      public:

      AA(intk):n(k)

      intget()returnn;

      intget()constreturnn+1;

      ;

      intmain()

      

      AAa(5);

      constAAb(6);

      cout<  return0;

      

      执行后的输出结果是()。

      A.55

      B.57

      C.75

      D.77

      13.有如下程序:

      #include

      usingnamespacestd;

      classDemo

      

      public:

      Demo()cout<<"defaultconstructor\n";

      Demo(constDemo&x)cont<<"copyconstruc-

      tor\n";

      ;

      DemouserCode(Demob)Democ(b);returnC;

      intmain()

      

      Demoa;d;

      cout<<"callinguserCode()\n";

      d=userCode(a):

      return0;

      

      执行上面程序的过程中,构造函数Demo(  )和Demo(constDem0&x)被调用的次数分别是(  )。

      A.1和1

      B.1和2

      C.2和3

      D.2和4

      14.有如下程序:

      #include

      usingnamespacestd;

      classDA

      intk;

      public:

      DA(intx=1):k(x)

      ~DA()cout<  ;

      intmain()

      DAd[]=DA(3),DA(3),DA(3));

      DA+p=newDA[2];

      delete[]p;

      return();

      

      这个程序的输出结果是(  )。

      A.111

      B.333

      C.11333

      D.11133

      15.有如下程序:

      #include

      usingnamespacestd;

      classMyClass

      public:

      MyClass(intx):val(x)

      voidPrint()constcout<<"const:val="<<  voidPrint()cout<<"val="<  private:

      intval;

      ;

      intmain()

      constMyClassobj1(10);

      MyClassobj2(20);

      obj1.Print();

      obj2.Print();

      return0;

      

      程序的输出结果是(  )。

      A.va1=10const:va1=20

      B.const:va1=10const:va1=20

      C.const:va1=10val=20

      D.val=10va1=20

      16.关于函数中的<返回类型>。下列表述中错误的是(  )。

      A.<返回类型>中有可能包含关键字int

      B.<返回类型>中有可能包含自定义标识符

      C.<返回类型>中衣可能包含字符*

      D.<返回类型>中可能包含[]

      17.Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是(  )。

      Samplea[2],*p=newSample;

      A.0

      B.1

      C.2

      D.3

      18.有如下两个类定义:

      classXX

      private:

      doublex1;

      protected:

      doublex2;

      public:

      doublex3;

      ;

      claseYY:protectedXX

      private:

      doubley1;

      protected;

      doubley2;

      public:

      doubley3;

      ;

      在类YY中?;こ稍北淞康母鍪?  )。

      A.1

      B.2

      C.3

      D.4

      19.下列关于运算符重载的描述中,错误的是(  )。

      A.可以通过运算符重载在C++中创建新的运算符

      B.赋值运算符只能重载为成员函数

      C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象

      D.重载类型转换运算符时不需要声明返回类型

      20.下列关于类模板的描述中,错误的是(  )。

      A.类模板的成员函数都是模板函数

      B.可以为类模板参数设置默认值

      C.类模板描述了一组类

      D.类模板中只允许有一个类型参数

    1.D?!窘馕觥恐挥泄屑坛械墓谐稍辈拍鼙慌缮嗟亩韵笾苯臃梦?,其他的情况都会因为访问权限问题产生错误。

      2.C?!窘馕觥勘咎饪疾榭忌钥奖垂乖旌恼莆?。因为++运算是右结合的,所以在使用a对b赋值时,b的hum变为1,而a的num变为2(先赋值再自加)。

      3.D?!窘馕觥勘咎饪疾閏in流对象的几种成员函数get,getline,read及流提取符>>的使用规则。

      4.C?!窘馕觥坑芍骱齧ain入手,定义TestClass类的对象cs1,执行cs1.va1,其中va1为静态变量,根据intTestClass::val=0;初始化,TestClass中的TestClass()val++;构造函数执行后,val值为1。主函数中接着定义对象cs2,cs3,cs4。执行cout<

      5.B?!窘馕觥勘咎饪疾楣乖旌挠τ?。对象建立用初始化列表对数据成员进行时。列表中的参数类型要与构造函数中形参类型一致。B选项中第二个参数为13301111155,是字符串,而构造函数中第二个形参为char型,两者不一致造成错误。

      6.D?!窘馕觥可髋缮嗟囊话阈纬晌猚lass派生类名:[继承方式]基类名。其中继承方式包括public、private和protected。而virtual为C++中的关键字,所以选项C错。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。

      7.D?!窘馕觥勘咎饪疾榈氖怯言嗟亩ㄒ澹豪郃为类B的友元类,则类A的所有成员函数都是类B的友元函数,但反之则不一定成立。

      8.B?!窘馕觥啃榛嗟囊刖褪俏讼逍?,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行。

      9.C?!窘馕觥勘嘁胧钡亩嗵允峭ü卦睾湍0逄逑值?,运行时的多态性是通过虚函数体现的。

      10.D?!窘馕觥渴紫榷ㄒ錞estClass3的对象obj,参数为10。其中TestClass3为TestClass1和TestClass2的派生类。然后调用disp成员函数。disp中首先执行TestClassl::disp();,然后执行TestClass2::disp();,最后执行输出语句cout<

      11.D?!窘馕觥坑芍骱齧ain入手,定义了类D对象obi。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为ABCD,依次为类A、类B、类C、类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。

      12.B?!窘馕觥克胶卦?,是指同一个函数名可以对应着多个函数的实现,类AA中定义了两个9et()函数,一个为普通成员函数,另一个为常成员函数。一般对象a既可以调用普通成员函数get,也可以调用常成员函数get,但是由于常成员函数不能更新对象的数据成员,所以题中通过对象a调用的函数为普通成员函数get(),返回值为5。常对象b只能调用常成员函数,所以题中通过对象b调用的函数为常成员函数get(),返回值为7。

      13.C?!窘馕觥亢鼶emo()为构造函数,而Demo(constDemo&x)为复制构造函数。C++在创建一个对象时,会自动调用类的构造函数,所以语句"Demoa,d;"将调用函数Demo()2次。当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数。由此可知语句d=userCode(a);调用拷贝构造函数3次。

      14.C?!窘馕觥勘咎饪疾榈氖俏龉购投韵蟮纳嫫?。在主函数中,首先定义了一个DA类对象数组d,从初始化列表中可以看出,它包含三个对象;然后通过new运算符动态创建了一个DA类的对象数组,并将首地址赋给DA类指针P;接着通过delete[]运算符销毁指针P所指向的数组,故此时会输出11。最后函数结束,销毁前面定义的对象数组d,会输出333。故最后的输出结果是11333。

      15.D?!窘馕觥吭诮⒗喽韵笫?,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承的声明顺序;执行成员对象的构造函数,调用顺序按照各个成员在类中的声明顺序;执行自身的构造函数。根据以上总结以及题意可知答案选择D选项。

      16.B?!窘馕觥?lt;返回类型>又称函数类型,表示一个

      函数所计算(或运行)的结果值类型,这里的类型可以是预定义类型(如int)、复合类型(如double*)、用户定义类型(如枚举类),若返回值只做更新(或设置)等操作,则该函数返回类型为void类型,函数类型和内置数组不能作为返回类型,但类类型和容器类型可以被直接返回。

      17.D?!窘馕觥抗乖旌诙韵蟊淮唇ㄊ庇上低匙远饔?,本题共创建3个对象。

      18.C?!窘馕觥颗缮啻踊啾;ぜ坛衏lassYY:pro-tectedXX时,基类的公有成员在派生类中变为?;こ稍?,基类的?;こ稍痹谂缮嘀腥匀皇潜;こ稍?本题中YY本身有一个?;こ稍眣2,再加上基类XX的x2和x3,故选C。

      19.A?!窘馕觥吭怂惴闹卦厥钦攵訡++中原有运算符进行的,不能通过重载创造新的运算符。

      20.D?!窘馕觥坷嗄0迨且幌盗邢喙乩嗟哪0?,类成员组成相同,成员函数的源代码形式相同,所不同的是所针对的类型。类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。但可以为类模板的参数设置默认值。由此可知应选D。

         临近考试就越不能松懈,考生在做练习时可以将自己做错的题目记下来,避免下次再出现类似错误,计算机等级考试其实没有大家想的那么难,只要巩固好知识点,可以熟练操作相关的程序,那么通过考试也就十分轻松了!

    相关推荐:

    2018年12月计算机二级C++考前冲刺练习题及答案(2)

    广东省2019年3月全国计算机等级考试报名是什么时候?

    专题汇总

  • 即有分期副总裁刘铮解读《中国新时代蓝领消费与成长白皮书》 2018-11-26
  • 回复@老老保老张工:计划不要批准?那不还是你自己做主?有必要走形式么? 2018-11-26
  • 广东省人大开展学习贯彻习近平总书记重要讲话精神专题集中学习研讨 2018-11-26
  • 我相信“交警雨中护送高考生”是真,“交警雨中护送高考生”反被该高考生家长投诉是假。 2018-11-26