xx年VisualC面向对象与可视化程序设计期末复习题一.docx
- 文档编号:14529443
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:33
- 大小:177.91KB
xx年VisualC面向对象与可视化程序设计期末复习题一.docx
《xx年VisualC面向对象与可视化程序设计期末复习题一.docx》由会员分享,可在线阅读,更多相关《xx年VisualC面向对象与可视化程序设计期末复习题一.docx(33页珍藏版)》请在冰点文库上搜索。
xx年VisualC面向对象与可视化程序设计期末复习题一
《VC程序设计》习题
一、单项选择题1、假定MyClass为一个类,则执行“”MyClassa[3],*p[2];”语句时,自动调用该类构造函数的次数为(B)
A、2B、3C、4D、5
2、对于结构中定义的成员,其隐含访问权限为(C)
A、protectedB、privateC、publicD、static
3、一个类的友元函数或友元类能够通过成员操作符访问该类的(B)
A、私有成员B、所有成员C、公用成员D、保护成员
4、下面说法正确的是(A)
A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为(D)
#include
srtuctCOMPLEX
{
intx;
inty;
}cNum[2]={1,3,2,7};
voidmain()
{
cout< } A、3B、2C、21D、6 6、类CNum的缺省构造函数和析构函数是(A) A、CNum()和~CNum()B、CNum(int)和~CNum() C、CNum()和~CNum(delete)D、CNum()和int~CNum() 7、在C++中,若对函数未加说明,则函数的隐含类型是(A) A、intB、doubleC、voidD、char 8、已知类A是类B的友元,类B是类C的友元,则(D) A、类A一定是类C的友元 B、类C一定是类A的友元 C、类C的成员函数可以访问类B的对象的任何成员 D、类A的成员函数可以访问类B的对象的任何成员 9、下列说法中正确的是(B) A、类定义中只能说明函数成员的函数头,不能定义函数体 B、类中的函数成员可以在类体中定义,也可以在类体之外定义 C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中 D、在类体之外定义的函数成员不能操作该类的私有数据成员 10、以下不属于成员函数的是(B) A、静态成员函数B、友元函数 C、构造函数D、析构函数 11、对于消息队列的描述正确的是(D) A、在Windows中只有一个消息系统,即系统消息队列。 消息队列是一个系统定义的数据结构,用于临时存储消息。 B、系统可从消息队列将信息直接发给窗口。 另外,每个正在Windows下运行的应用程序都有自己的消息队列。 C、系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。 应用程序的消息对列中存储了程序的所有窗口的全部消息。 D、以上都正确 12、一个视图对象能连接(A)文档对象,一个文档对象能连接()视图对象。 A、一个,多个B、多个,一个 C、一个,一个D、多个,多个 13、MFC类库中的类按层次关系可知,CStatic的直接父类为(B) A、CObjectB、CWndC、CcmdTargetD、CFrameWnd 14、可以利用控件的(C)属性和Tab键顺序来为控件分组。 A、IDB、TabstopC、GroupD、Caption 15、根据对话框的行为性质,对话框可以分为两类: (B) A、对话框资源和对话框类B、模式对话框和非模式对话框 C、对话框资源和对话框模板D、消息对话框和模式对话框 16、以下控件中,(C)没有Caption属性。 A、按钮B、群组框C、编辑控件D、静态控件 17、菜单项助记符前用(B)引导。 A、%B、&C、#D、$ 18、更新菜单状态的消息是(C)。 A、WM_COMMANDB、UPDATE C、ON_UPDATE_COMMAND_UID、INVALIDATE 19、关于工具栏、菜单和加速键的关系,正确的说法是(C)。 A、工具按钮与菜单必须一一对应B、工具按钮与加速键一一对应 C、工具按钮不必与菜单一一对应D、菜单与加速键一一对应 20、使用GetWindowDC()和GetDC()获取的设备上下文在退出时,必须调用(A)释放设备上下文。 A、ReleaseDC()B、delete()C、DeleteDC()D、Detach() 21、在面向对象编程中,对象的抽象集合称为(C)。 A、对象B、集合C、类D、实例 22、实现运行时的多态性,必须通过(A)来完成。 A、虚函数B、重载函数C、构造函数D、析构函数 23、在类外定义类的成员函数时,应当使用(B)来标识该函数为特定类的成员。 A、: B、: : C、->D、this 24、下面(A)是函数重载。 A、voidplay(int)和voidplay(float) B、play()和~play() C、voidplay(int)和intplay(int) D、voidplay()和intplay() 25、Windows操作系统主要基本内核元件中,___B____支持与操作系统密切相关的功能: 如进程加载、文本切换、文件I/O以及内存管理、线程管理等。 () A、GDIB、KERNELC、USERD、以上都不是。 26、所有的控件都是(B)类的派生类,都可以作为一个特殊的窗口来处理。 A、CViewB、CWndC、CWindowD、CDialog 27、设置编辑控件的文本内容,可使用函数(A) A、SetWindowText()B、SetSel() C、ReplaceSel()D、GetWindowText() 29、文档负责将数据存储到永久存储介质中,通常是磁盘文件或数据库,存取过程称为(B)。 A、文件访问B、串行化C、文件读写D、格式化 30、下列对模板的声明,正确的是(D)。 A、template C、template 二、填空题 1、VC++开发环境中,int型数据占4个字节,shortint占____2___个字节,longint占____4_____个字节,char型数据占1个字节,double型数据占____8_____个字节。 2、若for循环的“头”为“for(inti=1;i<10;i++)”,并且在循环体中不会修改i的值,则循环体将被重复执行____9________次后结束。 3、两个函数的函数名___相同_____,但参数的个数或对应参数的类型_不同______时,则称为重载函数。 4、若ch为char型变量,n为int型变量,则下列语句 ch=’a’;n=3;ch=ch+n; cout<<”ch=”< 执行的结果是____ch=d______。 5、C++中函数的参数传递一种是按值传递,另一种是地址传递或_引用____传递。 6、C++运行时的多态性通过虚函数来实现,而编译时的多态性通过函数重载来实现。 7只读成员函数用____const_________关键字标识,内联成员函数用_______inline____关键字标识。 8、classtest{ public: staticintx; }; testt1,t2;t1.x=25; 程序运行到这里时,的值为____25________。 9、所有的文档类都派生于___Cdocument____________,所有的视图类都派生于: _____Cview________。 10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了__虚基类______机制。 将公共基类声明为它以后,它在派生类中只产生一个实例。 11、在代码中,使用CWnd: : _____UpdateData_______函数可实现控件与其成员变量之间的数据的传输。 12、列表框ClistBox类的成员函数___AddString___________用来向列表框增加列表项,成员函数_____ResetContent_______用来清除列表项所有项目。 13、: ______串行化___________是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。 14、Windows程序中的消息有窗口消息、命令消息和控件通知消息三种类型。 15、MFC中的集合类包括数组、列表、映射。 16、在进行绘图时,画刷用于指定图形的填充样式,_____画笔_______用于指定图形的边框样式。 17、组合框与列表框用途类似,它是由__列表框________和__编辑框________功能组合而成。 18、DC是Windows应用程序与设备驱动程序和输出设备之间的接口。 19、如果一个类中含有纯虚函数,则称该类为___抽象基类_________ 20、如果类的所有对象共享一个成员,则称该成员为__静态成员___________ 21、如果类中的成员只能被本类的成员函数和友元函数访问,则这些成员的访问权限为__私有_______;如果类中的成员能够被类外的函数访问,则这些成员的访问权限为: ____公有______。 22、用户按下键盘按键并放开的过程中,将产生至少三条消息: WM_KEYDOWN,WM_CHAR,WM_KEYUP 23、单选按钮初始化要使用函数如下: voidCheckRadioButton(IDC_RADIO1,IDC_RADIOn,IDC_RADIOm) 其功能的具体描述为: _从IDC_RADIO1到IDC_RADIOn,中设置IDC_RADIOm为默认 24、列表框分为单选列表框和多选列表框两种,中任一时刻只能选择一项,则可以选取多项。 三选择填空题(每空1分,共15分) 1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行⑴A的构造函数,接着执行⑵C的构造函数,然后执行___⑶_B__的构造函数,最后才执行⑷D的构造函数。 A、基类的对象成员B、派生类的对象成员 C、基类D、派生类 2、[5]B代表窗口客户区的显示设备上下文,[6]C代表整个窗口的显示设备上下文。 A、CPaintDCB、CClientDCC、CWindowDCD、CMetaFileDC 3、消息循环的处理过程如下: ⑺A函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后,⑻B把来自键盘的命令翻译成WM_XXX消息命令形式。 ⑼E函数通知Windows把每个消息分发给相应的窗口函数。 应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。 A、GetMessage()B、translateMessage()C、PostMessage() D、SendMessage()E、DispatchMessage() 4、常用的CButton类的成员函数中: ⑽A获得一个按钮控件的选中、选择和聚焦状态;⑾D得到一个按钮的选中状态;⑿C设置一个按钮的选中状态。 A、GetState()B、SetState()C、SetCheck() D、GetCheck()E、GetButtonStyle() 5、滚动条类CScrollBar的成员函数规定了滚动条的操作。 设置滚动条的范围使用⒀C函数,设置滚动块的位置使用⒁E函数,获取滚动块的当前位置使用⒂F函数。 A、SetPosB、SetRangeC、SetScrollRangeD、GetPos E、SetScrollPosF、GetScrollPosG、GetScrollRange 6、所有的文档类都派生于[5]C,所有的视图类都派生于[6]A。 A、CViewB、CWindowC、CDocumentD、CFormView 7、[7]C包括键盘和鼠标的输入。 这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由程序来处理消息;D[8]用来与Windows的控制对象,如列表框、按钮、复选框等进行双向通信。 当用户在列表框中改动当前选择或改变了复选框的状态时发出此类消息。 A、系统消息B、用户消息C、输入消息D、控制消息 8、使用[9]B获取的设备上下文在退出时,必须调用ReleaseDC()释放设备上下文。 A、GetWindowRect()B、GetDC() C、BeginPaint()D、GetClientRect() 9、在进行绘图时,[16]A用于指定图形的填充样式,___[17]_B__用于指定图形的边框样式。 A、画笔B、画刷C、区域D、位图 10、列表框ClistBox类的成员函数___[18]A__用来向列表框增加列表项,成员函数___[19]C__用来清除列表项所有项目,成员函数___[20]F__用来返回列表框的列表项的总数。 A、AddStringB、DeleteStringC、ResetContent D、FindStringE、GetCurSelF、GetCount 11、如果类中的成员只能被本类的成员函数和友元函数访问,则这些成员的访问权限为___[16]B_;如果类中的成员能够被类外的函数访问,则这些成员的访问权限为: ___[17]C__。 A、protectedB、privateC、publicD、static 12、列表框分为[18]B和[19C]两种,[20]B中任一时刻只能选择一项。 A、组合框B、单选列表框C、多选列表框D、编辑框 六、程序设计题(1题4分,2题9分,共13分) 1、简单的计算程序界面如下图所示,操作数1对应编辑框控件的ID为IDC_EDIT1,对应值类型的成员变量m_op1(int);操作数2对应编辑框控件的ID为IDC_EDIT2,对应值类型的成员变量m_op2(int);计算结果对应的编辑框控件的ID为IDC_EDIT3,对应值类型的成员变量m_result(int)。 假设输入的数为整数,加法按钮的功能是将两操作数相加,并将结果在对应的编辑框IDC_EDIT3显示出来。 写出加法按钮对应的代码。 voidCExDlg: : OnButton1() {UpdateDate(TRUE);1分 m_result=m_op1+m_op2;2分 UpdateDate(FALSE);1分 } 2、 2、// classCStudent: publicCObject{1分 public: CStringNum; CStringName; CTimeBirth; CStringAddress; CStringGrade;2分 DECLARE_SERIAL(CStudent)//使对象可串行化1分 virtualvoidSerialize(CArchive&ar);//重载串行化函数1分 }; // IMPLEMENT_SERIAL(CStudent,CObject,0)1分 voidCStudent: Serialize(CArchive&ar) {CObject: : Serialize(ar);1分 if(ar.IsStoring()) {ar< } else {ar>>Num>>Name>>Birth>>Address>>Grade;1分 } } 3、下列shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。 请从shape类派生三角形类(triangle)、矩形类(rectangle)、并给出具体的求面积函数。 classshape{ public: virtualfloatarea()=0 }; floattotal(shape*s[],intn) {floatsum=0.0; for(inti=0;i i++) sum=sum+i.area(); returnsum; } #include classtriangle: publicshape{1分 public: virtualfloatarea() { floats=(a+b+c)/2; returnsqrt(s*(s-a)*(s-b)*(s-c));3分 } private: floata,b,c;1分 }; classrectangle: publicshape{1分 public: virtualfloatarea() { returna*b;2分 } private: floata,b;1分 }; 4、创建一个记录通讯录内容的新类Caddrlist,包含: 姓名、住址、电话、出生日期,并使该类可以实现串行化。 请写出可以实现要求的CAddrlist.h和CAddrlist.cpp文件的内容 //文件内容: classCAddrlist: publicCObject{1分 public: CStringName; CStringAddress; CStringTel; CTimeBirth; CAddrlist();3分 DECLARE_SERIAL(CAddrlist)//使对象可串行化1分 virtualvoidSerialize(CArchive&ar);//重载串行化函数1分 }; //文件内容: IMPLEMENT_SERIAL(CAddrlist,CObject,0)1分 voidCAddrlist: : Serialize(CArchive&ar) {CObject: : Serialize(ar);1分 if(ar.IsStoring()) {ar< } else {ar>>Name>>Tel>>Address>>Birth;1分 } } 1、(10分)已知点类的定义如下: classPoint{ …… private: doublex,y; }; 分别用成员函数和友元函数实现计算两点间的距离,函数名为distance。 用成员函数实现(5分) doublePoint: : distance(constPoint&a) {doubledx,dy; dx=x-a.x; dy=y-a.y; returnsqrt(dx*dx+dy*dy); } 用友元函数实现(5分) doubledistance(constPoint&a,constPoint&b) {doubledx,dy; dx=a.x-b.x; dy=a.y-b.y; returnsqrt(dx*dx+dy*dy); } 5、(15分)要求计算立方体和圆柱2个几何体的表面积和体积。 可以抽象出一个公共的基类Base,把它作为抽象类,在该类内定义求表面积和体积的纯虚函数(抽象类本身是没有表面积和体积可言的)。 由这个抽象类派生出描述立方体和圆柱的2个具体类,在这2个类中都有计算表面积和体积的函数的自己版本。 请用C++语言定义上述类等级。 constdoublePI=3.14159; classBase{ public: virtualdoublearea()const=0; virtualdoublevolume()const=0; }; classCube: publicBase{ public: Cube(doublel=10) {length=l>0? l: 10;} doublearea()const {return6*length*length;} doublevolume()const {returnlength*length*length;} private: doublelength; }; classCylinder: publicBase{ public: Cylinder(doubler=10,doubleh=5) {radius=r>0? r: 10; height=h>0? h: 5; } doublearea()const {return2*PI*radius*radius+2*PI*radius*height;} doublevolume()const {returnPI*radius*radius*height;} private: doubleradius; doubleheight; }; 6、(10分)简单计算程序界面如下图所示,x对应编辑框控件的ID为IDC_EDIT1,对应值类型的成员变量m_x(double);y对应编辑框控件的ID为IDC_EDIT2,对应值类型的成员变量m_y(double);z对应的编辑框控件的ID为IDC_EDIT3,对应值类型的成员变量m_z(double)。 乘法按钮的功能是将x,y相乘,除法按钮的功能是将x,y相除,并将结果在z对应的编辑框IDC_EDIT3显示出来。 写出乘法按钮和除法按钮对应的代码。 (10分) voidCExDlg: : OnButtonMul()//乘法按钮 {UpdateDate(TRUE); m_z=m_x*m_y; UpdateDate(FALSE);} voidCExDlg: : OnButtondIV()//除法按钮 { UpdateDate(TRUE); if(m_y==0) {MessageBox(“除数不能为0! ”); return; } m_z=m_x/m_y; UpdateDate(FALSE); 7、(10分)设计一个基于对话框的应用程序,如下图所示。 要求: 单击Color按钮
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- xx VisualC 面向 对象 可视化 程序设计 期末 复习题