2023年面向对象程序设计含答案.doc
《2023年面向对象程序设计含答案.doc》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计含答案.doc(13页珍藏版)》请在咨信网上搜索。
一、 填空题(20分) 1、 __构造函数___是特殊的成员函数,在创建和初始化对象时调用。 2、 _静态成员____是局部于类的成员,它提供一种同类对象的__共享____机制。 3、 运算符重载的作用是使运算符可以操作自定义的_类对象___,但重载后运算符原有的 _基本语义__不变。 4、 派生类不能访问基类的_私有__成员,但可以访问基类的公有成员和__保护___成员。 5、 具有__纯虚函数___的类称为抽象类。 6、 Windows应用程序是靠_消息_来驱动的,其主函数的重要任务是对窗口进行初始化工作和_消息循环__。 7、 MFC是用消息映射表来实现消息与__消息响应函数__之间的映射的,MFC通过__4____个宏来声明和实现消息映射表。 8、 在文档/视图结构的框架中,视图类_CView__类的对象用来显示数据并接受用户操作。文档类_CDocument__对象的作用是存储和管理数据。 9、 CPaintDC是_CDC__类中最常用的派生类,它只能使用在CView类的_OnDraw__函数中。 10、 消息WM_MOUSEMOVE的消息响应函数的函数名为_OnMouseMove___。 11、 资源是供Windows应用程序使用的特殊数据,它们驻留在硬盘上的_可执行文献__中。常用的资源有菜单、快捷键、__图标___、位图等。 12、 内存中的对象可以以文献的形式存储在永久性存储介质中,而当应用程序再把它从永久性存储介质读入后,该对象能恢复为本来的状态,则该对象称之为__永(持)久性对象___。 二、简述题(20分,每题5分) (1)简述构成文档/视图结构应用程序框架的4个MFC派生类,并说出它们的功能。 答:假如工程名称为MyPrj,则MFC AppWizard会自动创建以下4个派生类来构成 应用程序的框架:CFrame类的派生类CMmainFrame、CWinApp类的派生类CMyPrjApp、CDocument类的派生类CMyPrjDoc和CMyPrjView。 其中,CMyPrjDoc类对象用来存储和管理应用程序中的数据;CMainFrame对象与CMyPrjView对象构成了应用程序的界面,CMainFrame对象只是CMyPrjView对象的容器,而CMyPrjView类的对象是用来显示文档与接受用户事件的;CMyPrjApp类的对象是应用程序的全局对象;它是应用程序中对象的容器;负责创建应用程序界面和消息循环。 (2)为什么拆分窗口的显示更新必须要同步?文档类的成员函数Update All Views的作用是什么? 答:由于应用程序的所有拆分窗口显示的应当是同一个文档,所以当文档发生变化时,该文档所相应的窗口当然要同时更新显示以对的地反映文档的内容。 文档类的成员函数Update All Views的作用是告知文档所相应的所有窗口同时进行重绘。 (3)如何才干使控件成为窗口的子窗口并且在窗口中可见?按钮控件能发明哪三种不同的形式? 答:为了使控件成为窗口的 子窗口并且在窗口中可见,两个控制样式的常数使所有控件都必须使用的,一个是WS_CHILD,另一个是WS_VISIBLE,前者使控件成为应用程序的 子窗口,后者使控件可见。在使用多个常数制定控件样式时,应当用符号"|"将其进行连接。 按钮控件能发明以下三种不同的形式:下压按钮、复选框、和单选按钮。 (4)如何把绘图工具载入设备描述环境进行绘画?请以画笔为例写出执行环节。 答:(1)创建画笔:CPen newPen(style,width,color); (2) 把画笔载入DC: CPen *oldPen=pDC->SelectObject(&newPen); (3)按规定进行绘画 (4)恢复旧画笔pDC->SelectObject(oldPen); 三、阅读下列程序,写出执行结果。(40分,每题5分) 1、#include<iostream.h> 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; }; Abc Abc::operator * (Abc obj) {Abc tempobj; tempobj.a=a*obj.a; tempobj.b=b*obj.b; tempobj.c=c*obj.c; return tempobj; } 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); cout<<”(obj2*obj3):\t”<<”a=”<<a<<’\t’<<”b=”<<b<<’\t’<<”c=”<<c<<’\t’<<endl; } 运营结果: (obj1*obj2): a=5 b=10 c=15 (obj2*obj3): a=25 b=50 c=75 2、#include <iostream.h> class BASE1 {public: BASE1(int i){cout<<”调用基类BASE1的构造函数:”<<i<<endl;} }; class BASE2 {public: BASE2(int j){cout<<”调用基类BASE2的构造函数:”<<j<<endl;} }; class A: public BASE1, public BASE2 {public: A(int a,int b,int c,int d): BASE2(b), BASE1(c), b2(a),b1(d) {cout<<”调用派生类A的构造函数;”<<a+b+c+d<<endl;} private: BASE1 b1; BASE2 b2; }; void main( ) {A ojb(11,22,33,44);} 运营结果: 调用基类Base1的构造函数:33 调用基类Base2的构造函数:22 调用基类Base1的构造函数:44 调用基类Base1的构造函数:11 调用派生类A的构造函数:110 3、#include <iostream.h> template <typename T> 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=temp; } void main( ) {int i,j; i=30; j=10; fun(i,j); cout<<”i=”<<i<<’\t’<<”j=”<<j<<endl; double a,b; a=1.23; b=3.21; fun(a,b); cout<<”a=”<<a<<’\t’<<”b=”<<b<<endl; double m=10; int n=30; fun(m,n); cout<<”m=”<<m<<’\t’<<”n=”<<n<<endl; } 运营结果: i=10 j=30 a=3.21 b=1.23 m=10 n=30 4、#include <iostream.h> void main( ) {double x=123.456; cout.width(10); cout.setf(ios::dec,ios::basefield); cout<<x<<endl; cout.setf(ios::left); cout<<x<<endl; cout.width(15); cout.setf(ios::right,ios::left); cout<<x<<endl; cout.setf(ios::showpos); cout<<x<<endl; cout<<-x<<endl; cout.setf(ios::scientific); cout<<x<<endl; }运营结果: 123.456 123.456 123.456 +123.456 -123.456 +1.234560e+002 5、#include <iostream.h> enum BREED { GOLDEN, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB }; class Mammal {public: // constructors Mammal():itsAge(2), itsWeight(5){} ~Mammal(){} //accessors int GetAge() const { return itsAge; } void SetAge(int age) { itsAge = age; } int GetWeight() const { return itsWeight; } void SetWeight(int weight) { itsWeight = weight; } //Other methods void Speak()const { cout << "Mammal sound!\n"; } void Sleep()const { cout << "shhh. I'm sleeping.\n"; } protected: int itsAge; int itsWeight; }; class Dog : public Mammal {public: // Constructors Dog():itsBreed(GOLDEN){} ~Dog(){} // Accessors BREED GetBreed() const { return itsBreed; } void SetBreed(BREED breed) { itsBreed = breed; } // Other methods void WagTail() const { cout << "Tail wagging...\n"; } void BegForFood() const { cout << "Begging for food...\n"; } private: BREED itsBreed; }; int main() {Dog fido; fido.Speak(); fido.WagTail(); cout << "Fido is " << fido.GetAge() << " years old\n"; return 0; } 运营结果:Mammal sound! Tail wagging … Fido is 2 years old 6、#include<iostream.h> class Base {public: void who(){cout<<”Base class”<<endl;}; class Derived1: public Base {public: void who(){cout<<”Derived1 class”<<endl;}; class derived2: public Base {public: void who(){cout<<”Derived2 class”<<endl; Void main() {base obj1, *p; derived1 obj2; derived2 obj3; P=&obj1; p->who(); P=&obj2; p->who(); P=&obj3; p->who(); Obj1.who(); Obj2.who(); Obj3.who(); } 结果:base class Base class Base class Base class Derived1 class Derived2 class 7、#include<iostream.h> class example { private: int date; static int count; public: example(int y=10):date(y) { cout<<”date=”<<date<<endl; Count++;} static int display() {return count;} }; int example::count=0; void main() {example e1; example e2(20); cout<<e1.Display()<<endl; cout<<e2.Display()<<endl; cout<<example::Display()<<endl; } 运营结果:Date=10 Date=20 2 2 2 8、指出下列程序中的错误,并说明理由 #include<iostream.h> class Student { public: void Student(){};//构造函数有返回类型错,函数后面多分号void Display() {cin>>name>>number;cout<<姓名<<name<<学号<<number<<endl;} //字符串缺少双引号 private: char *name=noname; //数据成员不能赋值 int number=0; //数据成员不能赋值 }; 四、编程题:(20分,每题10分) 1、 编写一个程序,实现小型公司的工资管理。该公司重要有4类人员:经理、兼职技术人员、销售员和销售经理。规定存储这些人员的编号、姓名和月工资,计算月工资并显示所有信息。月工资计算办法是:经理拿固定月薪8000元,兼职技术人员按每小时100元领取月薪,销售员按当月销售额的4%提成,销售经理既拿固定月工资又拿销售提成,固定月工资为5000元,销售提成为所管部门当月销售总额的0.5%。规定补充未完毕的代码,使其成为一个完整的程序。 #include <iostream.h> class Employee {public: employee(){cout<<”职工编号、姓名”; cin>>no>>name; salary=0;} void Pay(){} void Display(){} Protected: Int no; char name[10]; float salary;}; Class technician: public Employee //派生技术人员 { public:Technician() {hourlyrate=100.0;} void Pay(){cout<<name<<”本月工作时数:” cin>>workhours; salary=hourlyrate*workhours; } void Display(){cout<<”兼职技术人员”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl; } private: //补充下面内容 float hourlyrate int workhours;}; Class Saleman: public Employee //派生销售员类 { public: Salesman(){ commrate=0.04f;} //销售提成比例 void Pay() {cout<<name<<”本月销售额:”; //补充下面内容 cin>>sales; salary=sales*commrate;} void Display() {cout<<”销售员”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl; } Protected: Float commrate; sales;}; Class Manager: virtual public Employee { public: Manager(){ monthlypay=8000; } //补充函数体内容 Void Pay(){ salary=monthlypay; } //补充函数体内容 void Display() {cout<<”经理”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl; } Protected: float monthlypay;}; Class SalesManager: public Manager, public Salesman //补充此处类的内容 { public: SalesManager(){ monthlypay=5000; Commrate=0.005f; } void Pay(){cout<<name<<”所管部门月销售额:”; cin>>sales; salary=monthlypay+sales*commrate;} void Display(){cout<<”销售经理”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl; }void main() { manager m1; Technician t1; Salesman s1; Salesmanager sm1; 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秒)(答案略)- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 面向 对象 程序设计 答案
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文