面向对象程序设计往届试卷1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

… … … …
试 卷 装 订 线
… … … … … …
得分
五、 编程应用题(共 30 分)
装 订
1、(每空 2 分,共 8 分)将下列程序补充完整,要求输出所有 pumpkin 的总重量。
线

#include <iostream.h>

class pumpkin

{public: (1)
{ weight=w;
total_weight+=weight; }
答 题
~pumkin() {
(2)
}

static void total_display()
要 填
{ cout<<"Total weight is "<<total_weight<<" pounds."<<endl;}

private:

int weight; static int total_weight;
else
cout<<"x!=y"<<endl; }
void disp(){ cout<<"x="<<x<<",y="<<y<<endl; }
};
void main()
{ Sample s1,s2(2,3),s3(2); s1.disp(); s2.disp();
s3.disp(); }
5
运行结果为:

1、在 C++程序中,对象之间的相互通信通过

… …
A. 继承实现 B. 调用成员函数实现 C.封装实现
D.函数重载实现

2、若要启动运行一个计时器,则需添加
消息。
A. WM_TIMER B. COMMAND
C. WM_PAINT
D. ON_TIMER
1
3、
不是构造函数的特征。
A. 构造函数的函数名与类名相同; B. 构造函数可以重载;
不 要
6、一元运算符作为类友元函数重载时有
个形参;二元运算符 B 重载为成员函

数时实现表达式 oprd1 B oprd2 的运算,用函数调用表示相当于



7、当建立一个新对象时,程序自动调用

生 信
8、应用程序采用控制台方式(Console Application)时,链接器自动去寻找

息 …
数作为入口,采用 API 程序方式(Win32 Application)时,链接器自动去寻找

};

void main()

{ Sub4 obj(5); } 运行结果为:
写 考 生












线
… … … …
4
2. 给出下面程序的运行结果。(6 分) #include<iostream.h> class base { int n;
public: base(int a) { cout<<"constructing base class "; n=a; cout<<"n="<<n<<endl; } ~base(){cout<<"destructing base class"<<endl;}
生 信
};

(3)

void main()
… …
{ pumpkin p1(15),p2(20),p3(12);
(4)
}


(1)



(2)


(3)
线

(4)
… …

6
2、(每空 3 分,共 6 分)完成如下的程序,使得输出结果如右框所示: #include <iostream.h> class base { int x;

函数作为入口,采用 MFC 程序方式(MFC Application(exe)) 时,使用
… … … …
姓名
系统的
函数作为入口。
9、基类的私有成员在保护派生类中是
成员,基类的公有成员在私有派生

类中是
成员,基类的保护成员在公有派生类中是
成员。


订 线
得分
二、 选择题(每选 1 分,共 15 分)
Sample() {x=y=0; cout<<"constructing normally\n";}
Sample(int a,int b=2) { x=a; y=b; cout<<"constructing with number"<<endl;}
~Sample()
{ if(x==y) cout<<"x=y"<<endl;
{ base b(10),*p; derived d(12,24); b.print(); p=&d; p->print(); }
(1)
(2)
3、(每空 3 分,共 6 分)两个复数只有当它们的实部和虚部分别相等时,才被认为它们相等。
在空格处填入合适的内容,以完成下面的程序,使其重载运算符“==”,用以比较两个复数的
A. 其函数名与类名完全相同; B. 函数返回类型是 void 类型;
C. 无形参,也不可重载; D. 函数体中必须有 delete 语句;
14、关于引用,下列的说法中错误的是

A. 引用是给被引用的变量取一个别名;B.引用主要是用来作函数的形参和函数的返回值;
C. 在声明引用时,要给它另开辟内存单元; D. 在声明引用时,必须同时使它初始化;
3. 若要调用某一控件类的成员函数,列举能够实现的两种方法? (4 分)
3
得分
四、读程题(共 23 分)
1.给出下面程序的运行结果。(8 分)
#include<iostream.h>
class Base1
… …
{ public:

int n1;

Base1(int b) {n1=b;cout<<"This is Base1,n1="<<n1<<endl; }
};
bool complex::operator==(complex &com){ return(
(1)
); }
void main()
{ complex c1(12.3,32.5),c2(21.7,18.6);
if (
(2)
) cout<<"true\n";
else cout<<"false\n"; }
专业
1、对象是

的封装体。
2、所有的面向对象程序设计语言,都支持四个共同的本质特征是
、封装

班级
性、




3、在 MFC 方式中,常调用定义在
类中的
成员函数实现图
线 内
形的绘制和文档数据的显示。
不 要
4、重载不能改变运算符的


答 题
学号
5、在 C++中,访问一个对象的成员所用的运算符是_________,访问一个指针所指向 的对象的成员所用的运算符是_________。

{ public:

int n3;
装 订
Sub3(int a):Base1(a) {n3=a;cout<<"This is Sub3,n3="<<n3<<endl;}
线
};

class Sub4:public Sub2,public Sub3
不 要
{ public:

int n4;

Sub4(int a):Base1(a),Sub2(a),Sub3(a) {n4=a;cout<<"This is Sub4,n4="<<n4<<endl;}
15、下列不能作为类的成员的是

A.自身类对象的指针 B.自身类对象 C.自身类对象的引用 D.另一个类的对象
2
得分
三、简答题(共 12 分)
Βιβλιοθήκη Baidu
1. 若一个 Windows API 应用程序的最基本构成应包括哪些部分?说明构成部分的功能? (4 分)
2. 创建的一个单文档应用程序中包含哪些主要类?简述各类的作用?(4 分)
试 卷
};

class Sub2:virtual public Base1

{ public:
线
int n2;

Sub2(int a):Base1(a) {n2=a;cout<<"This is Sub2,n2="<<n2<<endl;}
… …
};

class Sub3:virtual public Base1
11、关于虚函数,
不正确。
A. 析构函数可以是虚函数
B. 构造函数不可以是虚函数
C. 虚函数是类的私有成员函数
D.虚函数是类的公有成员函数
12、通常,拷贝构造函数的参数是

A. 某个对象名 B. 某个对象的成员名 C. 某个对象的引用名 D. 某个对象的指针名 12、
13、定义析构函数时,应该注意

. (1)
(2)
7
4、(10 分)编程设计一个类,并在类中使用友元函数求两数的平方差,并在主函数中计算 5 和 4 的平方差。
8
9
面向对象程序设计 课程 时间 120 分钟
56 学时, 3.5 学分,闭卷,总分 100 分,占总评成绩 80 % 年 月 日

题号 一 二 三 四 五 六 七 八 九 十 合计

… …
满分 20 15 12 23 30
100


学院
得分


线
得分
一、填空题(每空 1 分,共 20 分)


… … …
base::10 base::12 derived::24
public:
base(int a) { x=a; }
(1)
;
};
class derived:public base {
int y;
public:
derived(int a,int b):base(a) { y=b; }
(2)
;
};
void main()
C. 构造函数可以设置缺省参数; D. 构造函数必须指定函数返回类型。
4、下列静态数据成员的特性中,
是错误的。
A. 说明静态数据成员时前边要加修饰符 static;
B. 静态数据成员要在类体外进行初始化;
C. 静态数据成员不是所有对象所共用的;
D. 引用静态数据成员时,可以在其名称前加<类名>和作用域运算符;
5、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,
是正确的。
A. void print() const; B. const void print(); C. void const print(); D. void print(const);
6、设置虚基类的目的是

A. 简化程序;
9、在多文件结构的程序中,通常把类的定义(声明)单独存放于
中。
A. 主文件
B. 实现文件
C. 库文件
D. 头文件
10、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是

A. 作为友元函数重载的 1 元运算符
B. 作为成员函数重载的 1 元运算符
C. 作为友元函数重载的 2 元运算符
D. 作为成员函数重载的 2 元运算符
B. 消除二义性; C. 提高运行效率; D. 减少目标代码;
7、每一个文档可以有
视图,每个视图只对应于一个确定的文档。
A. 一个
B. 二个
C. 三个
D. 多个
8、在下面的函数声明中,存在着语法错误的是

A. BC(int a, int); B. BC(int, int); C. BC(int, int b=5); D. BC(int a=5, int b);
}; class subs:public base { base bobj;
int m; public:
subs(int a,int b,int c):base(b),bobj(a) { cout<<"constructing sub class "; m=c; cout<<"m="<<m<<endl; }
相等。请在主函数中输出比较的结果。
#include <iostream.h>
class complex {
double real,imag;
public:
complex(double r,double i) { real=r; imag=i; }
bool operator==(complex &);
~subs(){cout<<"destructing sub class"<<endl;} }; void main() { subs s(1,2,3); }
运行结果为:
3. 给出下面程序的运行结果。(9 分)
#include<iostream.h>
class Sample
{ int x,y;
public:
相关文档
最新文档