VisualC面向对象与可视化程序设计期末复习题

上传人:无*** 文档编号:89258649 上传时间:2022-05-12 格式:DOC 页数:14 大小:165KB
收藏 版权申诉 举报 下载
VisualC面向对象与可视化程序设计期末复习题_第1页
第1页 / 共14页
VisualC面向对象与可视化程序设计期末复习题_第2页
第2页 / 共14页
VisualC面向对象与可视化程序设计期末复习题_第3页
第3页 / 共14页
资源描述:

《VisualC面向对象与可视化程序设计期末复习题》由会员分享,可在线阅读,更多相关《VisualC面向对象与可视化程序设计期末复习题(14页珍藏版)》请在装配图网上搜索。

1、VC程序设计习题一、单项选择题1、假定MyClass为一个类,则执行“” MyClass a3,*p2;”语句时,自动调用该类构造函数的次数为( B )A、2 B、3 C、4 D、52、对于结构中定义的成员,其隐含访问权限为( C )A、protected B、private C、public D、 static3、一个类的友元函数或友元类能够通过成员操作符访问该类的( B )A、私有成员 B、所有成员 C、公用成员 D、保护成员4、下面说法正确的是( A )A、构造函数可以重载,析构函数不能重载。B、构造函数不能重载,析构函数可以重载。C、构造函数可以重载,析构函数也可以重载。D、构造函数和

2、析构函数都不可以重载。5、下列语句的运行结果为( D )#include srtuct COMPLEXint x;int y; cNum2=1,3,2,7;void main()cout cNum0.y*cNum1 x D、this24、下面( A )是函数重载。 A、void play(int) 和void play(float) B、play( ) 和 play() C、void play(int) 和int play(int) D、void play( ) 和int play( )25、Windows操作系统主要基本内核元件中,_B_支持与操作系统密切相关的功能:如进程加载、文本切换、文

3、件I/O以及内存管理、线程管理等。( )A、GDI B、KERNEL C、USER D、以上都不是。26、所有的控件都是 (B ) 类的派生类,都可以作为一个特殊的窗口来处理。A、CView B、CWnd C、CWindow D、CDialog27、设置编辑控件的文本内容,可使用函数 ( A )A、SetWindowText( )B、SetSel( )C、ReplaceSel( )D、GetWindowText( )28、MFC中的集合类包括( C )。 A、对象、列表和映射 B、数组、列表和对象 C、数组、列表和映射 D、数组、列表和链表29、文档负责将数据存储到永久存储介质中,通常是磁盘文

4、件或数据库,存取过程称为( B )。 A、文件访问 B、串行化 C、文件读写 D、格式化30、下列对模板的声明,正确的是(D )。 A、template B、template C、template D、template二、填空题1、VC+开发环境中,int型数据占4个字节,short int占_2_个字节,long int 占_4_个字节,char型数据占 1 个字节, double型数据占_8_个字节。2、若for循环的“头”为“for(int i=1;i10;i+)”,并且在循环体中不会修改i的值,则循环体将被重复执行_9_次后结束。3、两个函数的函数名_相同_,但参数的个数或对应参数的类

5、型_不同_时,则称为重载函数。4、若ch为char型变量,n为int型变量,则下列语句 ch = a; n = 3; ch = ch + n; cout” ch = ” ch;执行的结果是_ch=d_。5、C+中函数的参数传递一种是按值传递,另一种是地址传递或_引用_传递。6、C+运行时的多态性通过虚函数来实现,而编译时的多态性通过函数重载来实现。7 只读成员函数用_ const _关键字标识,内联成员函数用_inline_关键字标识。8、 class test public: static int x;test t1,t2; t1.x = 25;程序运行到这里时,t2.x的值为_25_。9、

6、所有的文档类都派生于_Cdocument_ _,所有的视图类都派生于:_Cview_ _。10、为解决多继承中因公共基类而产生的二义性问题,C+语言提供了_虚基类_机制。将公共基类声明为它以后,它在派生类中只产生一个实例。11、在代码中,使用CWnd:_ UpdateData _函数可实现控件与其成员变量之间的数据的传输。12、列表框ClistBox类的成员函数_ AddString _用来向列表框增加列表项,成员函数_ ResetContent _用来清除列表项所有项目。13、:_串行化_ 是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。14、Windows程序中的消息有窗口

7、消息、命令消息和控件通知消息三种类型。15、MFC中的集合类包括数组 、 列表 、 映射 。16、在进行绘图时, 画刷 用于指定图形的填充样式, _画笔_用于指定图形的边框样式。17、组合框与列表框用途类似,它是由_列表框_和_编辑框_功能组合而成。18、 DC 是Windows应用程序与设备驱动程序和输出设备之间的接口。19、如果一个类中含有纯虚函数,则称该类为_抽象基类_20、如果类的所有对象共享一个成员,则称该成员为_静态成员_ 21、如果类中的成员只能被本类的成员函数和友元函数访问,则这些成员的访问权限为_私有_ _;如果类中的成员能够被类外的函数访问,则这些成员的访问权限为:_公有_

8、 _。22、用户按下键盘按键并放开的过程中,将产生至少三条消息:WM_KEYDOWN,WM_CHAR,WM_KEYUP 23、单选按钮初始化要使用函数如下:void CheckRadioButton(IDC_RADIO1, IDC_RADIOn , IDC_RADIOm) 其功能的具体描述为:_从IDC_RADIO1到IDC_RADIOn,中设置IDC_RADIOm为默认24、列表框分为 单选列表框 和 多选列表框 两种, 中任一时刻只能选择一项, 则可以选取多项。三 选择填空题(每空1分,共15分)1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行

9、A 的构造函数,接着执行 C 的构造函数,然后执行_ _B_的构造函数,最后才执行 D 的构造函数。A、基类的对象成员 B、派生类的对象成员 C、基类 D、派生类2、 5 B 代表窗口客户区的显示设备上下文, 6C 代表整个窗口的显示设备上下文。A、CPaintDC B、CClientDC C、CWindowDC D、CMetaFileDC3、消息循环的处理过程如下: A 函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后, B 把来自键盘的命令翻译成WM_XXX消息命令形

10、式。 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、GetC

11、heck( ) E、GetButtonStyle( ) 5、滚动条类CScrollBar的成员函数规定了滚动条的操作。设置滚动条的范围使用 C 函数,设置滚动块的位置使用 E 函数,获取滚动块的当前位置使用 F 函数。A、SetPos B、SetRange C、SetScrollRange D、GetPosE、SetScrollPos F、GetScrollPos G、 GetScrollRange6、所有的文档类都派生于 5C ,所有的视图类都派生于 6A 。A、CView B、CWindow C、CDocument D、CFormView7、 7C 包括键盘和鼠标的输入。这一类消息首先放在

12、系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由程序来处理消息; D 8 用来与Windows的控制对象,如列表框、按钮、复选框等进行双向通信。当用户在列表框中改动当前选择或改变了复选框的状态时发出此类消息。A、系统消息 B、用户消息 C、输入消息 D、控制消息8、使用 9 B 获取的设备上下文在退出时,必须调用ReleaseDC( )释放设备上下文。 A、GetWindowRect( ) B、GetDC( ) C、BeginPaint() D、GetClientRect( )9、在进行绘图时, 16A 用于指定图形的填充样式,_17_B_用于指定图形的边框样式。A、画笔

13、B、画刷 C、区域 D、位图10、列表框ClistBox类的成员函数_18A_用来向列表框增加列表项,成员函数_19C_用来清除列表项所有项目,成员函数_20F_用来返回列表框的列表项的总数。 A、AddString B、DeleteString C、ResetContent D、FindString E、GetCurSel F、GetCount 11、如果类中的成员只能被本类的成员函数和友元函数访问,则这些成员的访问权限为_16B _;如果类中的成员能够被类外的函数访问,则这些成员的访问权限为:_17C_。 A、protected B、private C、public D、static12、

14、列表框分为 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显

15、示出来。写出加法按钮对应的代码。 void CExDlg:OnButton1() UpdateDate(TRUE); 1分m_result = m_op1 + m_op2; 2分UpdateDate(FALSE); 1分2、为学员信息设计一个类CStudent,包含:学号、姓名、出生日期、家庭住址、班级,并使该类可以实现串行化。请写出可以实现要求的CStudent.h和CStudent.cpp文件的内容2、 /CStudent.hclass CStudent :public CObject 1分public:CString Num;CString Name;CTime Birth;CStrin

16、g Address;CString Grade; 2分 DECLARE_SERIAL(CStudent) / 使对象可串行化 1分 virtual void Serialize( CArchive & ar ); /重载串行化函数 1分;/ CStudent.cppIMPLEMENT_SERIAL(CStudent ,CObject, 0) 1分void CStudent:Serialize(CArchive & ar)CObject:Serialize(ar); 1分if ( ar.IsStoring() )arNumName Birth AddressNumName Birth Addre

17、ssGrade; 1分3、下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle)、并给出具体的求面积函数。 class shape public: virtual float area( )=0 ; float total(shape *s ,int n) float sum=0.0; for(int i=0; in: i+)sum=sum+i.area( ); return sum; #include 1分class triang

18、le:public shape 1分public: virtual float area( )float s=(a+b+c)/2;return sqrt(s*(s-a)*(s-b)*(s-c); 3分private:float a,b,c; 1分;class rectangle:public shape 1分public: virtual float area( )return a*b; 2分private:float a,b; 1分;4、创建一个记录通讯录内容的新类Caddrlist,包含:姓名、住址、电话、出生日期,并使该类可以实现串行化。请写出可以实现要求的CAddrlist.h和CAd

19、drlist.cpp文件的内容/Addrlist.h文件内容:class CAddrlist : public CObject 1分public:CString Name;CString Address;CString Tel;CTime Birth;CAddrlist(); 3分DECLARE_SERIAL(CAddrlist) / 使对象可串行化 1分 virtual void Serialize( CArchive & ar ); /重载串行化函数 1分;/ Addrlist.cpp文件内容:IMPLEMENT_SERIAL(CAddrlist,CObject, 0) 1分void CA

20、ddrlist:Serialize(CArchive & ar) CObject:Serialize(ar); 1分if ( ar.IsStoring() )arNameTelAddressNameTelAddressBirth; 1分1、 (10分)已知点类的定义如下:class Pointprivate: double x,y;; 分别用成员函数和友元函数实现计算两点间的距离,函数名为distance。 用成员函数实现(5分)double Point:distance( const Point &a ) double dx,dy;dx = x-a.x;dy = y-a.y;return s

21、qrt( dx*dx + dy*dy );用友元函数实现(5分)double distance( const Point &a, const Point &b ) double dx,dy;dx = a.x-b.x;dy = a.y-b.y;return sqrt( dx*dx + dy*dy );5、(15分)要求计算立方体和圆柱2个几何体的表面积和体积。可以抽象出一个公共的基类Base,把它作为抽象类,在该类内定义求表面积和体积的纯虚函数(抽象类本身是没有表面积和体积可言的)。由这个抽象类派生出描述立方体和圆柱的2个具体类,在这2个类中都有计算表面积和体积的函数的自己版本。请用C+语言定义

22、上述类等级。const double PI=3.14159;class Basepublic:virtual double area() const=0;virtual double volume() const=0; ;class Cube:public Basepublic:Cube(double l=10)length=l0 ? l : 10; double area() constreturn 6*length*length;double volume() const return length*length*length;private:double length;class Cyl

23、inder:public Basepublic:Cylinder(double r=10, double h=5)radius=r0 ? r : 10;height=h0 ? h : 5;double area() constreturn 2*PI*radius*radius+2*PI*radius*height;double volume() const return PI*radius*radius*height; private:double radius;double height;6、(10分)简单计算程序界面如下图所示,x对应编辑框控件的ID为 IDC_EDIT1,对应值类型的成员

24、变量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分) void CExDlg:OnButtonMul( ) / 乘法按钮 UpdateDate(TRUE); m_z = m_x * m_y; UpdateDate(FALSE); void CExDlg:OnButtondIV( ) /

25、除法按钮UpdateDate(TRUE); if ( m_y = 0 ) MessageBox( “除数不能为0!”);return;m_z = m_x / m_y; UpdateDate(FALSE); 7、(10分)设计一个基于对话框的应用程序,如下图所示。要求:单击Color按钮,能弹出通用颜色对话框选取颜色,并用该颜色显示:This is a color example。已知:Example组合框的ID为:IDC_DISPLAY。写出Color按钮的BN_CLICKED消息处理函数。void CXT6_4Dlg:OnColor() / TODO: Add your control no

26、tification handler code hereCOLORREF m_cTextColor;CColorDialog Dlg;if ( Dlg.DoModal()=IDOK )m_cTextColor=Dlg.GetColor();CWnd * pWnd=GetDlgItem(IDC_DISPLAY);CDC * pDC=pWnd-GetDC();CRect rcDisplay;pWnd-GetClientRect(rcDisplay);pDC-SetTextColor(m_cTextColor);CString s=This is a color example; DC-TextOu

27、t(rcDisplay.right/2-80,rcDisplay.bottom/2-5,s);8、如何定义ODBC的数据源?试叙述其过程。(5分)打开控制面板,双击ODBC图标,进入ODBC数据源管理器。定义用户DSN的步骤如下:(1) 单击【添加】按钮,弹出“创建新数据源”对话框。(2) 为新的数据源选择数据库驱动程序。并单击【完成】按钮。(3) 在“ODBC Microsoft Access 97 安装”对话框中,应为该数据源起一个简短的名称。并在下一个编辑框中输入对该数据库的说明。(4) 指定数据库的位置。单击【选取】按钮,然后指定所创建的Access数据库。(5) 单击【确定】按钮,刚

28、才创建的用户数据源被添加在“ODBC数据源管理器”的“用户数据源”列表中。9、(20分)该应用有4个命令按钮,作为增加项目、删除项目和全部删除项目以及退出程序的按键。另外,还有一个编辑框作为新项目名称输入框IDC_NAME_EDIT对应控件变量为m_Name(类型为CString),1个静态文本用于显示项目数目,列表框用于项目列表对应控件变量为m_List1,1个静态文本用于显示标题。界面下图所示。根据要求写出代码:(1)对话框初始化消息处理函数OnInitDialog()里,向列表框添加“China”,“Germany”两项内容。BOOL CEx6_3Dlg:OnInitDialog()re

29、turn TRUE; (2) “增加”命令按钮的单击消息处理函数OnAdd() 将新项目名称输入框的内容增加到列表框中。void CEx6_3Dlg:OnAdd() (3)“删除”按钮的单击消息处理函数OnDel() 将当前列表框中选中的项删除void CEx6_3Dlg:OnDel() (1) BOOL CEx6_3Dlg:OnInitDialog( ) m_List1.AddString(China); m_List1.AddString(Germany);UpdateData(FALSE);return TRUE;(2) void CEx6_3Dlg:OnAdd() if ( m_Nam

30、e.IsEmpty() ) MessageBox(项目名不能为空!); return; m_Name.TrimLeft(); m_Name.TrimRight(); if ( m_List1.FindString(-1,m_Name)!=LB_ERR ) MessageBox(列表框中已有相同的项目名,不能添加!); return;m_List1.AddString(m_Name);UpdateData(FALSE); (3) void CEx6_3Dlg:OnDel( ) int nIndex=m_List1.GetCurSel();if(nIndex!=LB_ERR)m_List1.Del

31、eteString(nIndex);elseMessageBox(当前没有选择项或列表框操作失败);UpdateData(FALSE); 10、下面是一个基于对话框的应用程序,用来求解一元二次方程的根。当用户在A、B、C 三个编辑框中输入3个参数后,单击【计算】按钮,将显示出该方程的根。(10分)各控件对应的成员变量见下表:控件ID号变量类型变量名IDC_A_EDITintm_aIDC_B_EDITintm_bIDC_C_EDITintm_cIDC_X1_EDITCStringm_x1IDC_X2_EDITCstringm_x2试写出计算按钮的单击消息处理函数。void CEx3_4Dlg:O

32、nButton1() 4、 void CEx6_1Dlg:OnButton1() UpdateData(); double disc;disc=(double)(m_b*m_b-4*m_a*m_c);if ( fabs(disc)1e-6 ) /如果disc大于0 double x1,x2; x1=(-m_b-sqrt(disc)/(2*m_a); x2=(-m_b+sqrt(disc)/(2*m_a); m_x1.Format(x1=%6.2f,x1); m_x2.Format(x2=%6.2f,x2);else /如果disc小于0double realpart,imagpart;real

33、part=-m_b/(2*m_a); imagpart=sqrt(-disc)/(2*m_a); m_x1.Format(x1=%6.2f+%6.2fi,realpart,imagpart); m_x2.Format(x2=%6.2f-%6.2fi,realpart,imagpart);UpdateData(FALSE); 11、简述用MFC进行ODBC的编程过程。(10分)关键知识点:(1)设计数据库。(2)定义ODBC数据源。(3)创建应用程序外壳。(4)设计主窗体。(5)将控件与数据库字段相关联。(6)编写代码实现添加新记录功能。(7)编写代码实现删除记录功能。(8)编写代码实现对记录排序功能。(9)编写代码实现查找记录功能等。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!