《2022年面向对象程序设计 2.pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计 2.pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 / 11 系领导审批并签名A / B 卷广州大学 20072008学年第一学期考试卷课程面向对象程序设计考试形式(闭卷,考试)学院系专业班级学号姓名题次一二三四五六七八九十总分评卷人分数20 20 40 20 100 评分一、填空题( 20分)1、 _是特殊的成员函数,在创建和初始化对象时调用。2、 _是局部于类的成员,它提供一种同类对象的_机制。3、 运算符重载的作用是使运算符可以操作自定义的_,但重载后运算符原有的_不变。4、 派生类不能访问基类的_成员,但可以访问基类的公有成员和_成员。5、 具有 _的类称为抽象类。6、Windows 应用程序是靠_来驱动的,其主函数的主要任务是对窗
2、口进行初始化工作和 _。7、MFC是用消息映射表来实现消息与_之间的映射的,MFC通过 _个宏来声明和实现消息映射表。8、在文档 /视图结构的框架中,视图类_类的对象用来显示数据并接受用户操作。文档类 _对象的作用是存储和管理数据。9、CPaintDC 是 _类中最常用的派生类,它只能使用在CView类的 _函数中。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 11 页2 / 11 10、 消息 WM_MOUSEMOVE的消息响应函数的函数名为_。11、 资源是供Windows 应用程序使用的特殊数据,它们驻留在硬盘上的_中。常用的资
3、源有菜单、快捷键、_、位图等。12、 内存中的对象可以以文件的形式存储在永久性存储介质中,而当应用程序再把它从永久性存储介质读入后,该对象能恢复为原来的状态,则该对象称之为_。二、简述题( 20 分,每题 5 分)(1)简述构成文档/ 视图结构应用程序框架的4 个 MFC派生类,并说出它们的功能。( 2)为什么拆分窗口的显示更新必须要同步?文档类的成员函数Update All Views 的作用是什么?(3)怎样才能使控件成为窗口的子窗口并且在窗口中可见?按钮控件能创造哪三种不同的形式?精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 1
4、1 页3 / 11 (4) 如何把绘图工具载入设备描述环境进行绘画?请以画笔为例写出执行步骤。三、阅读下列程序,写出执行结果。(40分,每题 5分) 1、#include class Abc public: Abc( )a=0 。 b=0。c=0。 Abc(int i,int j,int k)a=i。 b=j。c=k。 void get(int&i,int&j,int&k)i=a。j=b。k=c。 Abc operator * (Abc obj) 。private: int a,b,c。AbcAbc:operator * (Abc obj) Abc tempobj 。 tempobj.a=a*
5、obj.a 。 tempobj.b=b*obj.b 。 tempobj.c=c*obj.c 。 return tempobj 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 11 页4 / 11 void main() Abc obj1(1,2,3),obj2(5,5,5),obj3。 int a,b,c。 obj3=obj1*obj2 。 obj3.get(a,b,c)。cout” (obj1*obj2):t ” ” a=” a t ” b=” b t ” c=” c t endl 。(obj2 * obj3).get(a,b,c)
6、 。cout” (obj2*obj3):t ” ” a=” a t ” b=” b t ” c=” c t endl 。 2、#include class BASE1 public: BASE1(int i)cout” 调用基类 BASE1 的构造函数 :” iendl 。 。 class BASE2 public: BASE2(int j)cout” 调用基类 BASE2 的构造函数 :” jendl 。 。 class A: public BASE1, public BASE2 public: A(int a,int b,int c,int d): BASE2(b), BASE1(c),
7、b2(a),b1(d) cout ” 调用派生类A 的构造函数。 ” a+b+c+dendl 。 private: BASE1 b1 。BASE2 b2 。void main( ) A ojb(11,22,33,44) 。 3、#include template 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 11 页5 / 11 void fun(T&x,T&y) T temp 。temp=x。x=y。 y=temp。 void fun(double x, int y) double temp 。temp=x。 x=y 。 y=tem
8、p。 void main( ) int i,j 。i=30。j=10 。fun(i,j) 。cout ”i=” i t ” j=” jendl 。double a,b。a=1.23。b=3.21。fun(a,b)。cout” a=” a t ” b=” bendl 。double m=10。 int n=30 。fun(m,n) 。cout” m=” m t ” n=” nendl 。 4、#include void main( ) double x=123.456 。cout.width(10) 。cout.setf(ios:dec,ios:basefield) 。coutxendl 。co
9、ut.setf(ios:left) 。coutxendl 。cout.width(15) 。cout.setf(ios:right,ios:left) 。 coutxendl 。cout.setf(ios:showpos) 。coutxendl 。cout-xendl 。cout.setf(ios:scientific) 。coutxendl 。 5、#include enum BREED GOLDEN, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 11
10、 页6 / 11 class Mammal public: Mammal():itsAge(2), itsWeight(5) / constructors Mammal() int GetAge() const return itsAge 。 void SetAge(int age) itsAge = age 。 int GetWeight() const return itsWeight。 void SetWeight(int weight) itsWeight = weight。 void Speak()const cout Mammal sound!n。 void Sleep()cons
11、t cout shhh. Im sleeping.n。 protected: int itsAge 。int itsWeight 。class Dog : public Mammal public: Dog():itsBreed(GOLDEN) Dog() BREED GetBreed() const return itsBreed 。 void SetBreed(BREED breed) itsBreed = breed 。 void WagTail() const cout Tail wagging.n。 void BegForFood() const cout Begging for f
12、ood.n。 private: BREED itsBreed 。int main() Dog fido 。fido.Speak() 。fido.WagTail() 。cout Fido is fido.GetAge() years oldn。return 0。 6、#include class Base 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 11 页7 / 11 public: void who()cout” Base class” endl。 。class Derived1: public Base public: void
13、 who()cout” Derived1 class” endl。 。class derived2: public Base public: void who()cout” Derived2 class” who() 。P=&obj2 。 p-who() 。P=&obj3 。 p-who() 。Obj1.who() 。 Obj2.who() 。 Obj3.who() 。 7、#include class example private: int date。 static int count。 public: example(int y=10):date(y) cout”date= ”datee
14、ndl 。Count+。 static int display() return count。 。int example:count=0。void main() example e1 。 example e2(20)。 coute1.Display()endl。 coute2.Display()endl。 coutexample:Display()endl。 8、指出下列程序中的错误,并说明理由#include 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 11 页8 / 11 class Student public: void S
15、tudent()。void Display() cinnamenumber 。cout 姓名 name 学号 numberendl 。 private: char *name=noname。 int number=0。四、编程题:( 20 分,每题 10 分)1、 编写一个程序,实现小型公司的工资管理。该公司主要有4 类人员:经理、兼职技术人员、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000 元,兼职技术人员按每小时100 元领取月薪,销售员按当月销售额的4%提成,销售经理既拿固定月工资又拿销售提成,固定月工资为500
16、0 元,销售提成为所管部门当月销售总额的0.5%。要求补充未完成的代码,使其成为一个完整的程序。#include class Employee public: employee()coutnoname 。salary=0。 void Pay() void Display() Protected: Int no。 char name10。 float salary。 。Class technician: public Employee / 派生技术人员 public: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 11 页9 / 11
17、Technician() hourlyrate=100.0 。 void Pay()coutnameworkhours 。 salary=hourlyrate*workhours 。 void Display() cout”兼 职 技 术 人 员 ” name” ( 编 号 为 ” no ” )”本 月 工资: ” salaryendl 。 private: / 补充下面内容;Class Saleman: public Employee / 派生销售员类 public: Salesman() commrate=0.04f 。 / 销售提成比例void Pay() coutname ” 本月销售
18、额:” 。 /补充下面内容 void Display() cout ” 销售员” name” (编号为” no ” )” 本月工资: ” salaryendl 。 Protected: Float commrate。 sales。;Class Manager: virtual public Employee public: Manager() /补充函数体内容精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 11 页10 / 11 Void Pay() /补充函数体内容 void Display() cout ” 经理” name” (编
19、号为” no ” )” 本月工资: ” salaryendl 。 Protected: float monthlypay 。 。Class SalesManager:/补充此处类的内容 ;void main() manager m1 。 Technician t1。 Salesman s1。 Salesmanager sm1 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 11 页11 / 11 m1.pay()。 m1.display() 。 t1.pay()。 t1.display() 。s1.pay()。 s1.display()。 sm1.pay()。 sm1.display() 。 2、 定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,要求包括定义时间对象,设置时间,运行时间上加1 秒的操作,输出该对象的时间,输出格式为:AM (例如: 11:20:15AM ,上午 11时 20 分 15 秒)精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 11 页