计算机过级(大家可以讨论题目,共同进步啊)

      大家留言 2005-12-27 16: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)重载一个二元运算符时,必须声明两个形参

(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***

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

(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】 。

(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】 ;
    }
};


图片如下:
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}