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

时间:2010-09-11 11:25:56

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

 

一、填空题:
每小题1分,共15分
1、在深度为7的满二叉树中,度为2的结点个数为______。

自评分 
     
2、软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于______测试。

自评分 
     
3、在数据库系统中,实现各种数据管理体制功能的核心软件称为______。

自评分 
     
4、软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于______阶段。

自评分 
     
5、在结构化分析使用的数据流图(DFD)中,利用______对其中的图形元素进行确切解释。

自评分 
     
6、C++中只有两个逻辑常量:true和______。

自评分 
     
7、若要访问指针变量p所指向的数据,应使用表达式______。

自评分 
     
8、   已知一个函数的原型是:
     int fn(double x);
     若要以5.27为实参调用该函数,应使用表达式______。

自评分 
     
9、   有如下定义:
     class MA{
        int value;
     public:
      MA(int n=0): valut(n){}
     };
     MA*ta,tb;
     其中MA类的对象名标识符是______。

自评分 
     
10、   如下类定义中包含了构造函数和拷贝构造函数的原型声明,请在横线处填写正确的内容,使拷贝构造函数的声明完整。
   Class myClass{
   private:
   int data;
   public:
   myClass(int value);                  //构造函数
   myClass(const_________anotherObject); //拷贝构造函数
   }

自评分 
     
11、用来派生新类的称为______,而派生出的新类称为它的子类或派生类。

自评分 
     
12、   有如下程序:
   #include<iostream>
   using namespace std;
   class CA{
   public:
         CA()<cout<<''''A'''';)
   };
   class CB:private CA{
   public:
      CB(){cout<<''''B'''';}
   };
   int main(){
      CA a;
      CB b;
      return 0;
   }
   这个程序的输出结果是______。

自评分 
     
13、若将一个二元运算符重载为类的成员函数,其形参个数应该是______个。

自评分 
     
14、   有如下程序:
   #include<iostream>
   using namespace std;
   class DA{
      int k;
   public:
      DA(int x=1):k(x){}
      ~DA(){cout<<k;}
   };
   int main(){
      DA d[]={DA(3),DA(3),DA(3)};
      DA*p=new DA[2];
      delete []p;
      return 0;
   }
   这个程序的输出结果是_______。

自评分 
     
15、C++语言中的多态性分为编译时的多态性和______时的多态性。

自评分 
     
二、单选题:
每小题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、对下列二叉树 进行前序遍历的结果为
 A.DYBEAFCZX
 B.YDEBFZXCA
 C.ABDYECFXZ
 D.ABCDEFXYZ
     
7、某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
 A.+1
 B.-1
 C.2
 D./2
     
8、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。
 A.井
 B.交
 C.投影
 D.笛卡儿乘积
     
9、在E-R图中,用来表示实体之间是联系的图形是 。
 A.矩形
 B.椭圆形
 C.菱形
 D.平行四边形
     
10、下列叙述中错误的是 。
 A.在数据库系统中,数据的物理结构必须与逻辑结构一致.
 B.数据库技术的根本目标是要解决数据的共享问题
 C.数据库设计是指在已有数据库管理系统的基础上建立数据库
 D.数据库系统需要操作系统的支持
     
11、为了取代C中带参数的宏,在C++中使用
 A.重载函数
 B.内联函数
 C.递归函数
 D.友元函数
     
12、下列关于类定义的说法中,正确的是
 A.类定义中包括数据成员和函数成员的声明
 B.类成员的缺省访问权限是保护的
 C.数据成员必须被声明为私有的
 D.成员函数只能在类体外进行定义
     
13、下列关于派生类构造函数和析构函数的说法中,错误的是
 A.派生类的构造函数会隐含调用基类的构造函数
 B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数
 C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
 D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
     
14、通过运算符重载,可以改变运算符原有的
 A.操作数类型
 B.操作数个数
 C.优先级
 D.结合性
     
15、   有如下函数模板:
   template<class T>T square(T x){return x*x;}
   其中T是
 A.函数形参
 B.函数实参
 C.模板形参
 D.模板实参
     
16、使用输入输出操作符setw,可以控制
 A.输出精度
 B.输出宽度
 C.对齐方式
 D.填充字符
     
17、下列字符串中,不可以用作C++标识符的是
 A.y_2006
 B._TEST_H
 C.Retum
 D.witch
     
18、字面常量42、4.2、42L的数据类型分别是
 A.log、doule it
 B.log、float、it
 C.it、doule、log
 D.it、float、log
     
19、   执行下列语句段后,输出字符“*”的个数是
     for(int i=50;i>1;--i)cout<<''''*'''';
 A.48
 B.49
 C.50
 D.51
     
20、   有如下程序段
     int i=0, j=1;
     int & r=i;   //①
    r=j;         //②
    int*p=&i;   //③
    *p=&r;      //④
   其中会产生编译错误的语句是
 A.④
 B.③
 C.②
 D.①
     
21、   有如下函数定义:
     void func(int a,int&b) {a++; b++;}
     若执行代码段:
     int x=0 ,y=1
     func(x,y);
     则变量x和y值分别是
 A.0和1
 B.1和1
 C.0和2
 D.1和2
     
22、   有如下程序:
     #include
     using namespace std;
     class A{
     public:
        static int a;
        void init(){a=1;}
        A(int a=2) {init();a++;}
     };
     int A::a=0;
     A obj;
     int main()
     {
     cout<<obj a
     return 0;
     }
   运行时输出的结果是
 A.0
 B.1
 C.2
 D.3
     
23、下列有关继承和派生的叙述中,正确的是
 A.派生类不能访问基类的保护成员
 B.作为虚基类的类不能被实例化
 C.派生类应当向基类的构造函数传递参数
 D.虚函数必须在派生类中重新实现
     
24、下列运算符中,不能被重载的是
 A.&&
 B.!=
 C..
 D.++
     
25、下列函数模板的定义中,合法的是
 A.temlate <tyeame T> T a(T x){retur x<0?-x:x;}
 B.temlate cla <T> T a(T x){retur x<0?-x:x;}
 C.temlate T<cla T>a(T x){retur x<0?-x:x;}
 D.temlate T a(T x){retur x<0?-x:x;}
     
26、在语句cin>>data;中,cin是
 A.C++的关键字
 B.类名
 C.对象名
 D.函数名
     
27、   有如下程序:
     #include<iostream>
     using namespace std;
     class Test{
     private:
        int a;
     public:
        Test(){cout<<constructor<<end1;}
        Test(int a){cout<<a<<endl;}  
      Test(const Test &_test)
     {
        a=_test.a;
        cout<<copy constructor<<end1;
    }
        ~Test(){cout<<destructor<<end1;}
      };
     int main()
     {
        Test A(3);
        return 0;
      }
   运行时输出的结果是
 A.3
 B.cotructordetruclor
 C.coy cotructordetruclor
 D.3dtructor
     
28、   若有如下类声明
     class My Class {
     public:
        MyClass() {cout<<1;}
     };
     执行下列语句
     MyClass a,b[2],*P[2];
   以后,程序的输出结果是
 A.11
 B.111
 C.1111
 D.11111
     
29、   有如下程序:
     #include
     using namespace std;
     class Point {
     public;
        static int number;
     public:
        point(){number++;}
        ~Point(){number--;}
     };
     int Point :: number=0;
     void main(){
        Point * ptr;
        Point A,B;
     {
        Point * ptr_point=new point[3];
        ptr=ptr_point;
     }
     point C;
     cout<<Point :: number<<endl;
     delete[]ptr;
     }
   运行时输出的结果是
 A.3
 B.4
 C.6
 D.7
     
30、   如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。
     #include<iostream>
   using namespace std;
   class Base{
      int a,b;
   public:
      Base(int x,int y){a=x;b=y;}
      void show(){cout<<a<<'''',''''<<b<<endl;}
   };
   class Derived : public Base{
      int c,d;
   public:
      Derived(int x,int y,int z,int m) : Base(x,y){c=z;d=w;}
      void show(){cout<<c<<'''',''''<<d<<endl;}
   };
   int main()
   {
      Base B1(50,50),*pb;
      Derived D1(10,20,30,40);
      pb=&D1;
      pb->show();
      return ();
      }
   运行时输出的结果是
 A.10,20
 B.30,40
 C.20,30
 D.50,50
     
31、   #include<iostream>
   using namespace std;
   class A
   {
   public:
      A(int i) {x=i;}
      void dispa() {cout<<x<<'''','''';}
   private:
      int x;
   };
   class B: public A
   {
   public:
      B(int i): A(i+10) {x=i;}
      void dispb() (dispa(); cout<<x<<endl;}
   private:
      int x;
   };
   int main()
   {
      B b(2);
      b.dispb();
      return 0;
   }
   运行时输出的结果是
 A.10,2
 B.12,10
 C.12,2
 D.2,2
     
32、   虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。有如下程序:
   #include <iostream>
   using namespace std;
   class Base
   {
   public:
      virtual void f() {cout<<f0+;}
      void g() {cout<<g0+;}
   };
   class Derived: public Base
   {
   public:
      void f() {cout<<f+;}
      void g() {cout<<g+;}
   };
      int main()
   {
      Derived d;
      Base *p=&d;
      p->f(); p->g();
      return 0;
   }
   运行时输出的结果是
 A.f+g+
 B.f0+g+
 C.f+g0+
 D.f0+g0+
     
33、   下面程序中对一维坐标点类Point进行运算符重载
   #include <iostream>
   using namespace std;
   class Point {
   public:
      Point(int val) {x=val;}
      Point & operator++() {x++; return *this; }
      Point operator++(int) {Point old = *this; ++(*this); return old;}
      int GetX() const {return x;}
   private:
      int x;
   };
   int main()
   {
      Point a(10);
      cout << (++a).GetX();
      cout << a++.GetX();
      return 0;
   }
   编译和运行情况是
 A.运行时输出1011
 B.运行时输出1111
 C.运行时输出1112
 D.编译有错
     
34、   有如下程序:
   #include <iostream>
   using namespace std;
   int main()
   {
      char str[100], *p;
      cout<<Please input a string:;
      cin>>str;
      p=str;
      for (int i=0; *p!='''''''';p++,i++);
      cout<<i<<endl;
      return 0;
   }
   运行这个程序时,若输入字符串为 abcdefg abcd
   则输出结果是
 A.7
 B.12
 C.13
 D.100
     
35、   有如下程序:
   #include <iostream>
   using namespace std;
   class Sample
   {
  
      friend long fun(Sample s);
   public:
      Sample(long a) {x=a;}
   private:
      long x;
   };
   long fun(Sample s)
   {
  
      if(s.x<2) return 1;
      return s.x * fun(Sample(s.x-1));
   }
   int main()
   {
  
      int stun = 0;
      for (int i=0; i<6; i++) {sum += fun(Sample(i));}
      cout << sum;
      return 0;
   }
   运行时输出的结果是
 A.120
 B.16
 C.154
 D.34


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

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