2008年计算机等级考试二级C++真题

时间:2010-09-11 11:27:24

微信搜索关注"91考试网"公众号,领30元,获取事业编教师公务员等考试资料40G

 

一、填空题:
每小题1分,共15分
1、测试用例包括输入值集和_______值集。

自评分 
     
2、深度为5的满二叉树有__________个叶子结点。

自评分 
     
3、设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有_________个元素。

自评分 
     
4、在关系数据库中,用来表示实体之间联系的是_______。

自评分 
     
5、在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,   __________ 负责数据的模式定义与数据的物理存取构建。

自评分 
     
6、在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。类是一种抽象的概念,属于该类的一个实例叫做“________”。

自评分 
     
7、指针数组是由_______构成的数组。

自评分 
     
8、如果使用数组名作为函数参数,形实结合时,传递的是______。

自评分 
     
9、在类的对象被创建的时候, _______ 函数会被自动调用。

自评分 
     
10、在类中,______成员为类的所有对象所共享。

自评分 
     
11、   有如下程序:
      #include<iostream>
      using namespace std;
      class Base{
      public:
         int m,n;
      };
      class Derived1:_______ Base{};
      class Derived2:public Derived1{
      public:
         void SetMN(int M,int N){m=M;n=N;}
         int GetSumMN(){return(m+n);}
      };
      int main(){
         Derived2 objD;
         objD.SetMN(3,4);
         cout<<”M+N=”<<objD.m+obiD.n<<endl;
         return 0;
      }
   编译时只有“cout<<”M+N”<<objD.m+objD.n<<endl;”有语法错误,程序的其他地方没有语法错误。请判断下划线处使用的关键字是什么。

自评分 
     
12、   有如下程序:
      #include<iostream>
      using namespace std;
      class Base{
      int b;
      public:
         Base(int i){b=i;}
         Void disp(){cout<<Base:b=<<b<<'''''''';}
      };
      class Base1:virtual public Base{  
      public:  
         Base1(int i):Base(i){}
      };
      class Base2:virtual public Base{
      public:
         Base2(int i):Base(i){}
      };
      class Derived:public Base2.public Base1{
         int d;
      public:  
         Derived(int i,int j):Base1(j),Base2(j),_______
         {d=i;}
         void disp(){cout<<Derived:d=<<d<<'''''''';}
      };
      int main()
         Derived objD(1,2);objD.disp();
         objD.Base::disp();
         objD.Base1::disp();
         objD.Base2::disp();
         return 0;
      }  
   请将程序补充完整,使程序在运行时输出:
      Derivd:d=1 Base:b=2 Base:b=2 Base:b=2

自评分 
     
13、   如下程序声明了一个电话号码类PhoneNumber,重载了流插入运算符<<,以便于电话号码的输出。请将程序补充完整。
      #include<iostream>
      #include<iomanip>
      #include<string>
      using namespace std;
      class PhoneNumber{
      public:
         void setNumber(string number){this―>number=number;}
         //重载流插入操作符
         friend _________ (ostream & output,const PhoneNumber & num)
         { output<<num.number;return output;}
      private:
         string number;
   };
   int main(){
         PhoneNumber phone;
         phone.setNumber(8008100598);
         cout<<The phone number is:<<phone<<endl;
         return 0;
   }

自评分 
     
14、   如下程序声明了一个二维图形类TwoDShape,从其派生出矩形类Rec。
      #include<iostream>
      #include<string>
      using namespace std;
      class TwoDShape{//二维图形类
         char name[20];
      public:
         TwoDShape(char*n=unknown){
         strcpy(name,n);
      }
      Char*getName(){return name;}
      ________=0:
   };  
   class Rec:public TwoDShape{
         double width,height;
      public:
         Rec(double w=0.0,double h=0.0):TwoDShape(rectangle)
         {width=w;height=h;}
         double getWidth(){return width;)
         double getHeight(){return height;)
         double area(){return width*height;)  
      };
      int main(){
         TwoDShape*shape;
         Shape=new Rec(2.1,3.0);
         cout<<object is<<shape―>getName()<< ;
         eout<<Area is<<shape―>area()<<” ”;
         return 0;
      }
   请将程序补充完整,使程序在运行时输出:
      abject is triangle
      Area is 6.3

自评分 
     
15、   如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员函数show用于输出两个数据成员的数值。
      #include<iostream>
      using namespace std;
      ______   {
         T1 i;
         T2 j;
      public:
         dataClass(T1 a,T2 b){i=a;j=b;}
         void show(){cout<<i<<,<<j<<'''' '''';}
      };
      int main(){  
         dataClass<int.double>obl(10,0.23);
      dataClass<char,char * >oh2(''''X'''',my data);
      ob1.show();
      ob2.show();
      return 0;
   }
   请将程序补充完整,使程序在运行时输出:
   10,0.23
   X,my data

自评分 
     
二、单选题:
每小题1分,共35分
1、程序流程图中指有箭头的线段表示的是
 A.图元关系
 B.数据流
 C.控制流
 D.调用关系
     
2、结构化程序设计的基本原则不包括
 A.多态性
 B.自顶向下
 C.模块化
 D.逐步求精
     
3、软件设计中模块划分应遵循的准则是
 A.低内聚低耦合
 B.高内聚低耦合
 C.低内聚高耦合
 D.高内聚高耦合
     
4、在软件开发中,需求分析阶段产生的主要文档是
 A.可行性分析报告
 B.软件需求规格说明书
 C.概要设计说明书
 D.集成测试计划
     
5、算法的有穷性是指
 A.算法程序的运行时间是有限的
 B.算法程序所处理的数据量是有限的
 C.算法程序的长度是有限的
 D.算法只能被有限的用户使用
     
6、对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是
 A.快速排序
 B.冒泡排序
 C.直接插入排序
 D.堆排序
     
7、下列关于栈的叙述正确的是
 A.栈按“先进先出”组织数据
 B.栈按“先进后出”组织数据
 C.只能在栈底插入数据
 D.不能删除数据
     
8、在数据库设计中,将 E-R 图转换成关系数据模型的过程属于
 A.需求分析阶段
 B.概念设计阶段
 C.逻辑设计阶段
 D.物理设计阶段
     
9、有三个关系R、S和T如下: 由关系R和S通过运算得到关系T,则所使用的运算为
 A.并
 B.自然连接
 C.笛卡尔积
 D.交
     
10、设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表SC 的关键字(键或码)为
 A.课号,成绩
 B.学号,成绩
 C.学号,课号
 D.学号,姓名,成绩
     
11、下列有关函数重载的叙述中,错误的是
 A.函数重载就是用相同的函数名定义多个函数
 B.重载函数的参数列表必须不同
 C.重载函数的返回值类型必须不同
 D.重载函数的参数可以带有默认值
     
12、下列有关类成员的叙述中,正确的是
 A.友元函数是类的成员函数
 B.类成员的默认访问权限是私有的
 C.类成员函数必须声明为公有的
 D.类的静态数据成员不能是常成员
     
13、下列有关类继承的叙述中,错误的是
 A.继承可以实现软件复用
 B.虚基类可以解决由多继承产生的二义性问题
 C.派生类构造函数要负责调用基类的构造函数
 D.派生类没有继承基类的私有成员
     
14、下列有关运算符重载的叙述中正确的是
 A.运算符重载是多态性的一种表现
 B.C++中可以通过运算符重载创造新的运算符
 C.C++中所有运算符都可以作为非成员函数重载
 D.重载运算符时可以改变其结合性
     
15、下列有关模板的叙述中,正确的是
 A.函数模板不能含有常规形参
 B.函数模板的一个实例就是一个函数定义
 C.类模板的成员函数不能是模板函数
 D.用类模板定义对象时,绝对不能省略模板实参
     
16、下列有关C++流的叙述中,错误的是
 A.c++操作符etw设置的输出宽度永久有效
 B.C++操作符edl可以实现输出的回车换行
 C.处理文件I/O时,要包含头文件ftream
 D.进行输入操作时,eof()函数用于检测是否到达文件尾
     
17、下列符号中能够作为C++标识符的是
 A.cot
 B.2a
 C.-hae
 D.-cout
     
18、   已知枚举类型声明语句为:
   enum COLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
   则下列说法中错误的是
 A.枚举常量YELLOW的值为1
 B.枚举常量RED的值为6
 C.枚举常量BLACK的值为10
 D.枚举常量WHITE的值为1
     
19、   执行下列语句段后,输出字符“*”的个数是
   for(int i=50;i>1;i-=2)count<''''*'''';
 A.24
 B.25
 C.26
 D.50
     
20、   有如下定义:
   int a[5]={1,3,5,7,9},*p=a;
   下列表达式中不能得到数值5的是
 A.a[2]
 B.a[3]
 C.*(+2)
 D.*+4
     
21、   已知函数f的原形是void f(int*a,long&B);,变量v1、v2的定义是:
            int v1;long v2;
   下列调用语句中正确的是
 A.f(vl,amv2);
 B.f(v1,v2);
 C.f(amvl,amv2);
 D.f(amv1,v2);
     
22、   有如下类定义:
         class Point{
         private:
            static int how_many;
         };
         _____how_many=0;
   要初始化Point类的静态成员how_many,下划线处应填入的内容是
 A.it
 B.tatic it
 C.it Poit::
 D.tatic it Poit
     
23、在下列关键字中,不能用来表示继承方式的是
 A.rivate
 B.tatic
 C.ulic
 D.rotected
     
24、已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是
 A.Value oerator+(Value v,it i);
 B.Value oerator+(Value v=value,it i);
 C.Value oerator+(Value v,it i=0);
 D.Value oerator+(Value v=value,it i=0);
     
25、   下面是一个模板声明的开始部分:
   Template<typename T>double...
   由此可知
 A.这可能是一个函数模板的声明
 B.这可能是一个类模板的声明
 C.这既可能是一个函数模板的声明,也可能是一个类模板的声明
 D.这肯定是一个错误的模板声明
     
26、   有如下4个语句:  
   ①count<<''''A''''<<setfill(''''*'''')<<left<<setw(7)<<''''B''''<<endl;
   ②count<<setfill(''''*'''')<<left<<setw(7)<<''''A''''<<''''B''''<<endl;
   ③count<<''''A''''<<setfill(''''*'''')<<right<<setw(7)<<''''B''''<<endl;
   ④count<<setfill(''''*'''')<<right<<setw(7)<<''''A''''<<''''B''''<<endl;
   其中能显示A******B的是
 A.①和③
 B.①和④
 C.②和③
 D.②和④
     
27、   有如下类定义:
      Class MyClass{
         int value;
      public:
         MyClass(int n):value(n){}
         int getValue()const{return value;}
      };
   则类MyClass的构造函数的个数是
 A.1个
 B.2个
 C.3个
 D.4个
     
28、   有如下类和对象的定义:
   class Constants{
   public:
   static double get PI(){return 3.1416;}  
   };
   Constants constants;
   下列各组语句中,能输出3.1416的是
 A.coutltltcotat―gtgetPI();和coutltltCotat::getPI();
 B.coutltltcotat.getPI();和coutltltCotat.getPI();
 C.cout~cotat―gtgetPI();和coutltltCotat―gtgetPI();
 D.coutltltcotat.getPI();和coutltltCotat::getPI();
     
29、   有如下程序:
      #include<iostream>
      using namespace std;
      class VAC{
      public:
         int f()const{return 3;}
         int f(){return 5;}
      };
      int main(){
         VAC vl:
         const VAC v2;
         cout<<v1.f()<<v2.f();
         returil 0;
      }
   运行时的输出结果是
 A.53
 B.35
 C.55
 D.33
     
30、   有如下类的声明:
      class Base{
      protected:
         int amount;
      public:
         Base(int n=0):amount(n){}
         Int getAmount()const { return amount;}
      };
      class Derived:public Base{
      protected:
         int value;
      public:
         Derived(int m,int n):value(m),Base(n)f}
         int getData()const{return value+amount;}
   };
   已知x是一个Derived对象,则下列表达式中正确的是
 A.x.Value+x.getAmout()
 B.x.getData()-x.getAmout()
 C.x.getData()-x.amout
 D.x.value+x.amout
     
31、   有如下程序:
      #include<iostream>
      using namespace std;
      class Base{
         int x;
      public:
         Base(int n=O):x(n){cout<<n;}
         int getX()const{return x;}
      };
      class Derived:public Base{
         int y;
      public:
         Derived(int m,int n);y(m,)Base(n){cout<<m;}
         Derived(int m):y(m){cout<<m;}
      };
      int main(){
         Derived dl(3),d2(5,7)
         return 0;
      }
   运行时的输出结果是
 A.375
 B.357
 C.0375
 D.0357
     
32、下列有关抽象类和纯虚函数的叙述中,错误的是
 A.拥有纯虚函数的类是抽象类,不能用来定义对象
 B.N象类的派生类若不实现纯虚函数,它也是抽象类
 C.纯虚函数的声明以“=0;”结束
 D.纯虚函数都不能有函数体
     
33、   有如下程序:
      #incl ude<iostream>
      using namespace std;
      class Amount{
         int amount;
      public:
         Amount(int n=0):amount(n){}
         int getAmount()const{return amount;}
         Amount&operator+=(Amount a){
         amount+=a.amount:
         return________;
         }
      };
      int main(){
         Amount x(3),y(7);
         x+=y;
         cout<<x.getAmount()<<endl;
         return 0;
      }
   已知程序的运行结果是10,则下划线处缺失的表达式是
 A.*thi
 B.thi
 C.&amout
 D.amout
     
34、下列语句分别是不同程序中的第一个输入输出语句。若去掉其中的“<<left”,输出效果将发生变化的是
 A.coutltltleftltltetfill(''*'')ltlt357;
 B.coutltltleftltltetw(5)ltlt357;
 C.coutltltleftltltetw(5)ltltABCDE;
 D.coutltltleftltltABCDE;
     
35、   有如下程序:
      #include<iostream>
      using namespace std;
      class GA{
      public:
         virtual int f(){return 1;}
      };
      class GB:public GA{
      public:
         virtual int f(){return 2;}
      };
      void show(GA g){cout<<g.f();}
      void display(GA&g){cout<<g.f();}
      int main(){
         GA a;show(A);display(A);
         GB b;show(B);display(B);
      return 0;
      }
   运行时的输出结果是
 A.1111
 B.1211
 C.1112
 D.1212


微信搜索关注"91考试网"公众号,领30元,获取公务员事业编教师考试资料40G
【省市县地区导航】【考试题库导航】

电脑版  |  手机版  |  返回顶部