上海交通大学试卷(A卷) 2007-2008学年第二学期 程序设计(2) (参

2019-02-14 21:34

程序设计(2)

上海交通大学 上 海 交 通 大 学 试 卷(A卷) ACM试点班《C程序设计》试卷 2007.1.13 2008 ) 姓 名 ( 2007 学至 号 学年 第 _ 二 _ 学期 成 绩 班级号__ 学号______________ 姓名 课程名称 程序设计 (2) 成绩 一. 选择填空(10分)

1. C++对C语言作了很多改进,下列描述中 _ 使得C语言发生了质变,从面向过程变

成了面向对象。

A 增加了一些新的运算符;

B 允许函数重载,并允许设置缺省参数; C 规定函数说明必须用原型; D 引进了类和对象的概念;

2. 在一个单链表中,若S所指结点不是最后结点,在S之后插入T所指结点,则执行 。 A. T→next = S; S→next = T; B. T→next = S→next; S→next = T; C. T→next = S→next; S = T; D. S→next = T; T→next = S;

3.下面叙述正确的是 。

A.抽象基类中所有的virtual函数都必须声明为纯virtual函数 B.使用基类指针引用一个派生类的对象是非常危险的

C.如果基类申明了一个纯virtual函数,派生类只有实现该函数才能成为具体类。 D.一个类中有virtual函数,该类就成为抽象类。

4. 已知类D是类B的公有派生类,并且 D *pd, d ; B *pb; 不符合赋值兼容规则的

是 。

A. pb = pd; B. pd = pb;

C. pb = &d; D. pd = &d;

5. 下面叙述正确的是 。

A.“has-a”关于可以通过继承实现。 B.派生类不会继承基类的构造函数。

C.汽车类Car与车轮类SteeringWheel以及刹车装置类Brakes之间是“is-a”关系。 D.当销毁派生类对象时,析构函数的调用顺序和相应的构造函数的调用顺序相同。

第 1 页 共 14页

程序设计(2)

我承诺,我将严格遵守考试纪律。 承诺人: 题号 得分 批阅人(流水阅 卷教师签名处) 6. C++支持两种多态,包括编译时多态和运行时多态,编译时多态和运行时多态分别通过

来实现。

A 重载和虚函数 B 重载和重载 C 虚函数和重载 D 虚函数和虚函数

7. 关于纯虚函数和抽象类的描述中,错误的是

A 抽象类只能作为基类使用,其纯虚函数的实现由派生类给出 B 纯虚函数是一个特殊的虚函数,它没有具体的实现

C 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类。 D 抽象类是指具有纯虚函数的类

8. 对类的构造函数和析构函数描述正确的是 A 构造函数可以重载,析构函数不能重载 B 构造函数不能重载,析构函数可以重载 C 构造函数可以重载,析构函数也能重载 D 构造函数不能重载,析构函数也不能重载

9. 在下面四项中,不是用来限制类中成员的访问权限的是 。 A. private B. public C. protect D. protected

10. 在类中说明的友元函数是 。 A. 可以访问该类对象的私有成员的成员函数 B. 冠以关键词friend说明的一般函数 C. 没有this指针的成员函数 D. 与静态成员函数具有相同的功能

第 2 页 共 14页

程序设计(2)

二. 读程序,写结果(40分)(运行一下就知道答案了)

1.(6分)

class A { int x,y; public:

A(int xx=0,int yy=0):x(xx),y(yy) { cout << \<< x << \\<< y<

A* fun(int x, int y) { A *p = new A(x,y); return p; }

int main() { A *p1;

p1 = fun(123,789); A a1; a1.put(); delete p1; p1 = fun(333,999);

cout << \程序结束: \return 0; }

第 3 页 共 14页

程序设计(2)

2。(6分)

class coord

{ friend coord operator++(coord &op); private:

int x,y; public: };

coord::coord(int i,int j) { x=i; y=j; }

void coord::print() { cout << \coord operator++(coord &op)

{ ++op.x; ++op.y;

return op; } int main()

{ coord ob(5,10); }

ob.print();

++ob; ob.print();

operator++(ob); ob.print(); return 0;

coord(int i=0,int j=0); void print();

第 4 页 共 14页

程序设计(2)

3. (6分) class A { private:

int a; public:

A(int M) { a = M;} A() { a=0;}

void seta(int x) { a = x; }

void showA() { cout << \};

class B: public A { private: int b; public:

void setB(int x, int y) { b = x; seta(y); }

void showB(){ showA(); cout << \};

int main() { B obj;

obj.seta(53); obj.showA(); obj.setB(53,58); obj.showB(); return 0; }

第 5 页 共 14页


上海交通大学试卷(A卷) 2007-2008学年第二学期 程序设计(2) (参.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第四讲 图形变换与二次函数

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: