2005年9月第22次全国计算机等级考试二级C++考试真题

日期:12-14| http://www.59wj.com |C++历年真题|人气:268

2005年9月第22次全国计算机等级考试二级C++考试真题

(考试时间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)设有如下关系表:
R    S    T 
A B C  A B C  A B C
1 1 2  3 1 3  1 1 2
2 2 3      2 2 3
        3 1 3
则下列操作中正确的是
 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)重载一个二元运算符时,必须声明两个形参

www.59wj.com


(15)下列关于模板的叙述中,错误的是
 A)模板声明中的第一个符号总是关键字template
 B)在模板声明中用 < 和 > 括起来的部分是模板的形参表
 C)类模板不能有数据成员
 D)在一定条件下函数模板的实参可以省略
(16)对于语句 cout<<endl><<x; 中的各个组成部分,下列叙述中错误的是
 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<<i;
 输出结果是
 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 <iostream>
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 <class T>
    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<int>(3, 5.5);
(26)有如下程序:
#include <iostream>
    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***

www.59wj.com


(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 <iostream>
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 <iostream>
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 <iostream>
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*有一个参数

www.59wj.com


(34)下面关于C++流的叙述中,正确的是
 A)cin是一个输入流对象
 B)可以用ifstream定义一个输出流对象
 C)执行语句序列char *y="PQMN"; cout<<y; 将输出字符串 "PQMN"的地址
 D)执行语句序列char  x[80]; cin.getline(x,80); 时,若键入
   Happy  new  year
   则x中的字符串是"Happy"
(35)有如下程序:
  #include <iostream>
  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<<a.get( )<<b.get( );
   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--; i<j && str[i]==str[j]; i++,j--);
return i    【7】    j;

(7)执行语句序列
 int x=10, &r=x; 
 cout><<x><<'-'<<r><<endl;
 输出结果为   【8】   。

www.59wj.com


(8)下列程序的输出结果为
 Object id=0
 Object id=1
 请将程序补充完整。
#include <iostream>
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="<<countP><<endl;}
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 <iostream>
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"<<endl; } };
class Derived : public Base {
public:
void fun( ) {
      【13】       //显式调用基类的fun函数
    cout<<"Derived::fun"<<endl;
}};
(13)多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[ ]运算符只能作为类的  【14】  函数重载。
(14)下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当语句,完成栈类模板的定义。
template <class T >
class Tstack
{
 enum {size=1000};
 T stack[size];
 int top;
public:
 Tstack( ):top(0){ }
 void push(const T &i){
  if(top<size)
   stack[top++]=i;
 }
 T pop( ){
        if(top == 0) exit(1);       //栈空时终止运行
  return  【15】  ;
 }
};

 

www.59wj.com 如果觉得《2005年9月第22次全国计算机等级考试二级C++考试真题》C++历年真题,jsj不错,可以推荐给好友哦。
本文Tags: 计算机等级考试 - 历年真题 - 计算机二级历年真题 - C++历年真题,jsj,
在百度中搜索相关文章:2005年9月第22次全国计算机等级考试二级C++考试真题
在谷歌中搜索相关文章:2005年9月第22次全国计算机等级考试二级C++考试真题
在soso中搜索相关文章:2005年9月第22次全国计算机等级考试二级C++考试真题
在搜狗中搜索相关文章:2005年9月第22次全国计算机等级考试二级C++考试真题
相关分类导航|
热门推荐|