加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

面向对象程序设计期末复习题

(2008-01-07 20:41:29)
标签:

杂谈

分类: 面向对象程序设计
 

一、单选题

1. 关于面向对象系统分析,下列说法中不正确的是(    )。

        A. 术语“面向对象分析”可以用缩写OOA表示

        B. 面向对象分析阶段对问题域的描述比实现阶段更详细

        C. 面向对象分析包括问题域分析和应用分析两个步骤

        D. 面向对象分析需要识别对象的内部和外部特征

2. 关于消息,下列说法中不正确的是(   )。

        A. 发送消息的对象请求服务,接受消息的对象提供服务

        B. 消息的发送者必须了解消息的接收者如何相应消息

        C. 在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用

        D. 每个对象只能接收某些特定格式的消息

3. 关于封装,下列说法中不正确的是(   )。

        A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体

        B. 通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)

        C. 通过封装,每个对象都成为相对独立的实体

        D. 通过封装,对象的属性都是不可见的

4. 引入友元的主要目的是为了(    )。

        A. 增强数据安全性             B. 提高程序的可靠性

        C. 提高程序的效率和灵活性     D. 保证类的封装性

5. 静态数据成员的初始化是在(    )中进行的。

        A. 构造函数                  B. 任何成员函数

        C. 所属类                    D. 全局区

二、填空题 

1.C++源程序文件的扩展名分别为________。

2. 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到________的开始位置。

3. 在switch语句中,每个语句标号所含关键字case后面的表达式必须是_______。

4. 若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行______次后正常结束。

5. 对于无返回值函数,定义函数时要用__________修饰函数类型。

三、写出程序运行结果

1、#include <iostream.h>

void main()

{

    int i,j;

    for(i=1;i<=9;i++)

    {

for(j=1;j<=i;j++)

            cout<<i*j<<" ";

      cout<<endl;

}

2#include <iostream.h>

class A{

public:

virtual void act1( );

void act2( ){

act1( );

this->act1( );

A::act1( );

}

};

void A::act1( ){

cout<<"A::act1( ) called."<<endl;

}

class B : public A{

public:

void act1( );

};

void B::act1( ){

cout<<"B::act1( ) called."<<endl;

}

void main( ){

B b;

b.act2( );

}

}

四、程序改错

1.下面是一个类的定义,存在着3处语法错误,请指出错误行的行号并改正。

class CE {                                      //1行

     private:                                   //2行

        int a,b;                                //3行

        int getmin() {return (a<b? a:b);}       //4行

     public                                     //5行

        int c;                                  //6行

        void SetValue(int x1,int x2, int x3) {  //7行

            a=x1; b=x2; c=x3;                   //8行

        };                                      //9行

        int GetMin();                           //10行

};                                              //11行

int GetMin() {                                  //12行

    int d=getmin();                             //13行

    return (d<c? d:c);                          //14行

                                              //15行

 

错误行的行号为______、________和________。

分别改正为____________________、________________和___________________。

五、程序填空

1. 已知一个类的定义如下:

#include<iostream.h>

class AA {

    int a[10];

    int n;

public:

    void SetA(int aa[], int nn); //用数组aa初始化数据成员a,

                                 //用nn初始化数据成员n

    int MaxA();  //从数组a中前n个元素中查找最大值

void SortA();  //采用选择排序的方法对数组a中前n个元素

               //进行从小到大排序

    void InsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序

    void PrintA();  //依次输出数组a中的前n个元素

};

 

    该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。

int ____(1)_____

{

    int x=a[0];

    for(int i=1; i<n; i++)

        if(a[i]>x) ___(2)___;

    ___(3)___;

}

 

(1)                   (2)                   (3)

 

六、程序设计

建立线性表类,其数据元素为浮点类型,要求用数组来表示线性表。该类向外部世界提供的服务有:

Insert--pos位置插入元素item(包含追加元素功能)

Delete--删除pos位置的元素并返回

Clearlist--清空表

要求:写出定义和使用该线性表类的完整程序

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有