打印本文 打印本文  关闭窗口 关闭窗口  
2005年9月全国计算机等级考试二级C++笔试试题及答案
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:41:30  文章录入:杜斌  责任编辑:杜斌

  (考试时间90分钟,满分100分)

一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

(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)PDL(过程设计语言) 
 B)PAD图
 C)N-S图  
 D)DFD图

(7)下列叙述中正确的是
 A)软件交付使用后还需要进行维护
 B)软件一旦交付使用就不需要再进行维护
 C)软件交付使用后其生命周期就结束
 D)软件维护是指修复程序中被破坏的指令

(8)数据库设计的根本目标是要解决
 A)数据共享问题  
 B)数据安全问题
 C)大量数据存储问题 
 D)简化数据维护

(9)设有如下关系表:

则下列操作中正确的是
 A)T=R∩S 
 B)T=R∪S 
 C)T=R×S 
 D)T=R/S

(10)数据库系统的核心是
 A)数据模型  
 B)数据库管理系统
 C)数据库  
 D)数据库管理员

(11)下列关于C++函数的叙述中,正确的是
 A)每个函数至少要具有一个参数 
 B)每个函数都必须返回一个值
 C)函数在被调用之前必须先声明 
 D)函数不能自己调用自己

(12)下列关于类和对象的叙述中,错误的是
 A)一个类只能有一个对象 
 B)对象是类的具体实例 
 C)类是对某一类对象的抽象 
 D)类和对象的关系是一种数据类型与变量的关系

(13)在C++中,用于实现运行时多态性的是
 A)内联函数 
 B)重载函数 
 C)模板函数 
 D)虚函数

(14)下列关于运算符重载的叙述中,正确的是
 A)通过运算符重载,可以定义新的运算符
 B)有的运算符只能作为成员函数重载
 C)若重载运算符+,则相应的运算符函数名是+
 D)重载一个二元运算符时,必须声明两个形参

(15)下列关于模板的叙述中,错误的是
 A)模板声明中的第一个符号总是关键字template
 B)在模板声明中用 < 和 > 括起来的部分是模板的形参表 
 C)类模板不能有数据成员
 D)在一定条件下函数模板的实参可以省略

(16)对于语句 cout<< 
 A)“cout”是一个输出流对象 
 B)“endl”的作用是输出回车换行 
 C)“x”是一个变量  
 D)“<<”称作提取运算符 

(17)下列字符串中,正确的C++标识符是
 A)foo-1 
 B)2b 
 C)new 
 D)_256

(18)已知枚举类型定义语句为:
     enum Token { NAME, NUMBER, PLUS = 5, MINUS, PRINT = 10 };
则下列叙述中错误的是
 A)枚举常量NAME的值为1
 B)枚举常量NUMBER的值为1
 C)枚举常量MINUS的值为6
 D)枚举常量PRINT的值为10

(19)执行语句序列
 int i=0; while(i >< 25) i+=3; cout< 输出结果是
 A)24 
 B)25 
 C)27 
 D)28


(20)要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是
 A)int vect[ ]={30,50,-88};
 B)int vect[ ]={30,50,-88,0,0}; 
 C)int vect[5]={30,50,-88};
 D)int vect[5]={30,50,-88,0,0};

(21)有如下程序:
    #include
void fun(int& x, int y) { int t = x; x = y; y = t; }
int main( )
{
    int a[2] = {23, 42};
    fun(a[1], a[0]);
    std::cout << a[0] << ", " << a[1] << std::endl;
     return 0;
}
执行后的输出结果是
 A)42, 42 
 B)23, 23 
 C)23, 42 
 D)42, 23

(22)有如下类声明:
    class Foo {  int bar;  };
    则Foo类的成员bar是
 A)公有数据成员 
 B)公有成员函数 
 C)私有数据成员 
 D)私有成员函数

(23)有如下类声明:
class MyBASE{
   int k;
public:
  void set(int n){ k=n;}
  int get( )const{ return k; }
};
class MyDERIVED: protected MyBASE{
protected:
  int j;
public:
  void set(int m, int n){ MyBASE::set(m); j=n;}
  int get( )const{ return MyBASE::get( )+j; }
};
则类MyDERIVED中保护的数据成员和成员函数的个数是
 A)4 
 B)3 
 C)2 
 D)1

(24)已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是
 A)这是运算符-的重载运算符函数
 B)这个函数所重载的运算符是一个一元运算符 
 C)这是一个成员函数
 D)这个函数不改变类的任何数据成员的值

(25)有如下函数模板定义:
    template
    T func(T x, T y) {  return x*x+y*y; }
在下列对func的调用中,错误的是
 A)func(3, 5); 
 B)func(3.0, 5.5);
 C)func (3, 5.5); 
 D)func(3, 5.5);

(26)有如下程序:
#include
    using namespace std;
    int main( )
    {
        cout.fill('*');
        cout.width(6);
        cout.fill('#');
        cout << 123 << endl;
        return 0;
    }
执行后的输出结果是
 A)###123 
 B)123### 
 C)***123 
 D)123***

(27)在下列函数原型中,可以作为类AA构造函数的是
 A)void AA(int); 
 B)int AA( ); 
 C)AA(int)const; 
 D)AA(int);

(28)下列关于this指针的叙述中,正确的是
 A)任何与类相关的函数都有this指针  
 B)类的成员函数都有this指针
 C)类的友元函数都有this指针 
 D)类的非静态成员函数才有this指针

(29)有如下程序:
#include
using namespace std;
class Test {
public:
    Test( ) { n+=2; }
    ~Test( ) { n-=3; }
    static int getNum( ) { return n; }
private:
    static int n;
};
int Test::n = 1;
int main( )
{
    Test* p = new Test;
    delete p;
    cout << "n=" << Test::getNum( ) << endl;
    return 0;
}
执行后的输出结果是
 A)n=0 
 B)n=1 
 C)n=2   
 D)n=3

(30)有如下程序:
#include
using namespace std;
class A {
public:
    A( ) { cout << "A"; }
};
class B { public: B( ) { cout << "B"; } };
class C : public A {
    B b;
public:
    C( ) { cout << "C"; }
};
int main( ) {  C obj;   return 0; }
执行后的输出结果是
 A)CBA 
 B)BAC 
 C)ACB 
 D)ABC

(31)有如下类声明:
  class XA{
   int x;
  public:
   XA(int n){ x=n;}
  };
  class XB: public XA{
   int y;
  public:
   XB(int a,int b);
  };
    在构造函数XB的下列定义中,正确的是
 A)XB::XB(int a,int b): x(a), y(b){ }
 B)XB::XB(int a,int b): XA(a), y(b){ }
 C)XB::XB(int a,int b): x(a), XB(b){ } 
 D)XB::XB(int a,int b): XA(a), XB(b){ }

(32)有如下程序:
#include
using namespace std;
class BASE{
public:
   ~BASE( ){ cout<<"BASE";}
};
class DERIVED: public BASE {
public:
  ~DERIVED( ){ cout<<"DERIVED";}
};
int main( ){DERIVED x; return 0 ;}
执行后的输出结果是
 A)BASE   
 B)DERIVED
 C)BASEDERIVED  
 D)DERIVEDBASE

(33)在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。下列叙述中正确的是
 A)operator+有两个参数,operator*有两个参数
 B)operator+有两个参数,operator*有一个参数
 C)operator+有一个参数,operator*有两个参数
 D)operator+有一个参数,operator*有一个参数

(34)下面关于C++流的叙述中,正确的是
 A)cin是一个输入流对象
 B)可以用ifstream定义一个输出流对象
 C)执行语句序列char *y="PQMN"; cout< D)执行语句序列char  x[80]; cin.getline(x,80); 时,若键入
   Happy  new  year
   则x中的字符串是"Happy"

(35)有如下程序:
  #include
  using namespace std;
  class AA{
   int n;
  public:
   AA(int k):n(k){ }
   int get( ){ return n;}
   int get( )const{ return n+1;}
  };
  int main( )
  {
   AA a(5);
   const AA b(6);
   cout<   return 0;
  }
    执行后的输出结果是
 A)55    
 B)57    
 C)75    
 D)77


二、填空题(每空2分,共30分)
 请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是   【1】   。

(2)算法复杂度主要包括时间复杂度和   【2】   复杂度。

(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中   【3】   的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

(4)一棵二叉树第六层(根结点为第一层)的结点数最多为   【4】   个。

(5)数据结构分为逻辑结构和存储结构,循环队列属于   【5】   结构。

(6)下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。
bool fun(char *str)
{
int i=0, j=0;
while (str[j])   【6】  ;
for(j--; ireturn i    【7】    j;
}
 
(7)执行语句序列
 int x=10, &r=x; 
 cout><<<'-'<< 输出结果为   【8】   。
 
(8)下列程序的输出结果为
 Object id=0
 Object id=1
 请将程序补充完整。
#include
using namespace std;
class Point 
{
public: 
 Point(int xx=0, int yy=0) {X=xx; Y=yy; countP++; } 
 ~Point( ) { countP--; }
 int GetX( ) {return X;}
 int GetY( ) {return Y;}
 static void GetC( ) {cout<<" Object id="<<private: 
 int X,Y;
 static int countP; 
};
   【9】     //静态数据成员的初始化
int main( ) 
{
    Point::GetC( );
 Point A(4,5); 
 A.GetC( ); 
 return 0;
}

(9)非成员函数应声明为类的   【10】  函数才能访问这个类的private成员。
 
(10)派生类中的成员不能直接访问基类中的   【11】  成员。

(11)下列程序的输出结果为2,请将程序补充完整。
#include
using namespace std;
class Base
{
public:
    【12】  void fun( ){ cout<<1; }
};
class Derived:public Base
{
public:
 void fun( ) { cout<<2; }
};
int main( )
{
 Base *p= new Derived;
 p->fun( );
 delete p;
   return 0;
}

(12)请将下列类定义补充完整。
class Base { public: void fun( ){ cout<<"Base::fun"<class Derived : public Base {
public:
void fun( ) {
      【13】       //显式调用基类的fun函数
    cout<<"Derived::fun"<}};

(13)多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[ ]运算符只能作为类的  【14】  函数重载。

(14)下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当语句,完成栈类模板的定义。
template
class Tstack
{
 enum {size=1000};
 T stack[size];
 int top;
public:
 Tstack( ):top(0){ }
 void push(const T &i){
  if(top   stack[top++]=i;
 }
 T pop( ){
        if(top == 0) exit(1);       //栈空时终止运行
  return  【15】  ;
 }
};

2005年9月全国计算机等级考试二级C++笔试试题答案

选择题:
01.C
02.A
03.D
04.D
05.C
06.D
07.A
08.A
09.B
10.B
11.C
12.A
13.D
14.B
15.C
16.D
17.D
18.A
19.C
20.A
21.B
22.C
23.B
24.B
25.C
26.A
27.D
28.D
29.A
30.D
31.B
32.D
33.C
34.A
35.B

填空题:
36.数据库系统
37.空间
38.驱动模块
39.32
40.存储
41.J++      ;   >=
42.10-10
43.int point::count p=0
44.友元
45.私有
46.virtual
47.Base::fun()
48.成员
49.stack[--top]

打印本文 打印本文  关闭窗口 关闭窗口