版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机软件(本科)专业面向对象程序设计(C+)辅导材料(2014年4月)一、基本要求1、面向对象技术及C+基础(1)简单C+程序的基本结构(2)基本数据类型(3)函数和指针(4)数组和结构体(5)引用参数(6)类和对象的概念、定义和使用(构造函数、析构函数、对象成员初始化、静态成员、友元)(7)继承和派生类的概念(8)多态、虚函数和抽象类的概念。2、WindowsMFC编程基础(1)简单的Windows应用程序的结构及基本流程(2)Windows编程特点(3)Windows基本数据类型(4)MFC的概念及作用(5)使用MFC AppWizard3、对话框应用(1)创建对话框(2)添加并使用对话
2、框(3)无模式对话框(4)通用对话框(5)消息对话框4、常用控件应用(1)控件的创建和基本使用方法(2)静态控件和按钮(3)编辑框和旋转按钮控件(4)列表框(5)组合框(6)进展条、滚动条和滑动条5、菜单、工具栏和状态栏应用(1)文档应用程序框架(2)菜单(3)工具栏(4)状态栏6、框架窗口、文档和视图应用(1)主框架窗口和文档窗口(2)文档模板(3)MFC文档读写机制(文档序列化的使用、使用CFile类)(4)文档视图结构7、图形、数据库编程及动态链接库(1)设备环境和简单数据类(设备环境类的设置、坐标映射的使用、使用CPoint、CSize和CRect)(2)Visual C+对数据库的支
3、持(3)动态链接库(DLL的概念、动态链接库的创建、动态链接库的访问)二、基本概念1、在面向对象方法中,类之间共享属性和操作的机制称为继承。2、通过使用new和delete两个运算符进行的分配为动态存储分配。3、重载的运算符保持其原有的操作数个数、优先级和结合性不变。4、在C+中封装性、继承性和多态性是面向对象思想的主要特征。5、MFC框架程序是从WinMain函数开始执行的。6、派生类的成员一般分为两部分,一部分是从基类继承的成员,另一部分是自己定义的新成员。派生类构造函数的执行顺序是先执行基类的构造函数,再执行派生类的构造函数。7、句柄是标识诸如窗口、菜单、图标、内存块、输出设备等对象的数
4、值。Windows系统的各种资源都是通过句柄来访问的。8、消息映射是将消息和消息处理函数联系起来的机制。9、控件是应用程序用于输入和输出的子窗口。10、应用程序类由CWinApp 类派生,应用程序类封装了程序的初始化、运行和结束等功能。11、多文档类用于存放文档数据并完成文件I/O,为每个打开的文档生成这个类的一个对象,而不是共用同一对象。12、定义类时,除了public和private外,关键字 protected 也可修饰成员的类型。13、在C+中封装性、继承性和多态性是面向对象思想的主要特征。14、Windows程序和控制台应用程序之间一个最根本区别,在于控制台应用程序是通过调用系统函数
5、来获得用户输入,而Windows程序则是通过系统发送的消息来处理用户输入。15、在Visual C+中,设备环境类CDC提供了绘制和打印的全部函数。为了能让用户使用一些特殊的设备环境,CDC还派生了CPaintDC 、CClientDC、CWindowDC和CMetaFileDC类。 16、单独一个执行程序运行时,默认运行包含一个主线程,主线程以函数地址的形式提供程序的启动点,如main或WinMain函数。线程是一个独立的执行流,是进程内部的一个独立的执行单元,相当于一个子程序,它对应Visual C+中的CWinThread 类的对象。17、在Visual C+中,所谓“模式对话框”是指当
6、对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。所谓“无模式对话框”是指当对话框被弹出后,一直保留在屏幕上,用户可继续在对话框所在的应用程序中进行其它操作。18、在Visual C+中,静态图片控件的一般属性中Group的含义是,指定控件组中的第一个控件,如果该项未被选中,则此控件后的所有控件均被看同一组。成组的目的是可以让用户用键盘方向键在同一组控件中进行切换。19、在Visual C+中,文档窗口对于单文档应用程序来说,它和主框架窗口是一致的。20、在Visual C+中,静态图片控件的一般属性中Disabled的含义是,指定控件初始化时
7、是否禁用。21、在Visual C+中,工具按钮和菜单项相结合的具体方法是在弹出该工具按钮的属性对话框,将该工具按钮的ID号设为相关联的菜单项ID。22、在Visual C+中,文档类由CDocument 派生,文档类的任务是对数据进行管理和维护。文档窗口对于对于多文档应用程序,文档窗口是主框架窗口的子窗口。23、在Visual C+中,对话框的默认标题为Dialog,有OK和Cancel两个按钮,其中OK按钮的标识符为IDOK 。24、在Visual C+中,当为一个控件定义一个关联的数据变量后,可以使用CWnd: UpdateData 函数实现控件数据的输入和读取。通过菜单编辑器直接修改菜
8、单资源IDR_MAINFRAME 可以实现添加和修改应用程序菜单。25、在Visual C+中创建一个用户界面线程,首先要从CWinThread类产生一个派生类,同时必须使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE来声明和实现该派生类。三、问答题1、简述Windows编程中的设备环境的概念。 设备环境也称为DC,是由GDI保存的一个数据结构,设备环境包含了输出设备的绘图特征。在MFC中,CDC类实现了对设备环境的封装,CDC类的成员函数封装了各种用于绘制图形的Windows绘图函数(API函数)。除CDC类外,MFC还提供了从CDC类派生的CClientDC类
9、和CWindowDC类,分别代表客户区的设备环境和整个窗口的设备环境(包括非客户区)。2、基于表单的应用程序的特点是什么?基于表单的应用程序也使用文档视图结构。它有一个主框架窗口,可以含有菜单、工具栏及状态栏等用户接口,也有一个视图窗口,称为表单。它是由CFormView类派生,主要用于显示一组控件,而不是作为和用户交互的空白客户区。如果选择了多文档应用程序,则应用程序可以产生多个表单,如果选择了单文档应用程序,那么应用程序只能有一个表单。3、多文档应用程序中的多种文件类型和多菜单是怎样实现的? 在多文档应用程序中,当新增一种文件类型时,需要在项目中添加一个支持这种文件类型的文档类的视图类和子
10、窗口类,补充其特定功能,然后通过文档模板加入,并定义各自的菜单。4、什么是控件的数据映射机制?MFC通过数据映射机制(data map)设置对话框控件的初始状态及收集用户通过对话框控件的输入。数据映射将控件和对话框的数据成员绑定在一起,数据成员的值反映了控件的状态或控件的内容。首次打开对话框时,MFC传送数据成员的值到控件,显示对话框时,可以随时调用从窗口类CWnd继承的成员函数UpdateDataO传送的值。退出对话框时存在两种情况:当单击标识符为IDOK按钮退出时,所有控件的内容传送到对应的数据成员,当单击标识符为IDCANCEL按钮退出时,控件的内容不发送给数据成员。5、Windows编
11、程中事件和消息的概念。事件是由对象识别的一个动作。程序员可以编写相应的代码对此动作进行响应。事件通过消息描述,可以由一个用户动作产生,如单击鼠标;也可以由程序代码或系统产生,如定时器。消息惟一定义了一个事件。一个消息由一个消息名称(UINT)和两个参数(WPARAM,LPARAM)组成。6、MFC应用程序是如何实现Windows消息机制的? 在MFC应用程序框架中,通过消息映射将消息和消息处理函数联系起来。对于Windows消息和控件通知消息,MFC把消息传递给相应的窗口处理,消息在各类中的传递过程如下: 视图类一文档类一框架窗口类一应用程序类7、Windows编程中的基于动态链接库设计特点。
12、(1)动态链接库提供了一些特定结构的函数,能被应用程序在运行过程中装入和连接,多个应用程序可以共享同一个动态链接库。(2)在Windows操作系统中,最主要的DLL有KERNEL32.DLL、GDI32.DLL和USER32.DLL。 KERNEL32.DLL用来处理存储器低层功能、任务和资源管理等Windows核心服务;GDI32.DLL提供图形设备接口,管理用户界面和图形绘制,包括Windows元文件、位图、设备描述表和字体等;USER32.DLL负责窗口的管理,包括消息、菜单、光标、计时器及其它与控制窗口显示相关的一些功能。8、Windows编程中的基于资源的程序设计特点。(1)Wind
13、ows应用程序包含众多图形元素,如光标、菜单、工具栏、位图、对话框等,每一个这样的资源都用相应的标识符来区分。(2)在Windows操作环境中,每一个这样的资源元素都作为一种可以装入应用程序的资源来存放。这些资源就像C+中的常量一样,可以被编辑、修改,也可以被其他应用程序共享。9、简述 Windows编程中的消息驱动机制特点。(1)Windows程序和控制台应用程序之间一个最根本区别,在于控制台应用程序是通过调用系统函数来获得用户输入,而Windows程序则是通过系统发送的消息来处理用户输入。(2)Windows操作环境中,无论是系统产生的动作或用户运行应用程序产生的动作,称为由事件产生的消息
14、。事件是由对象识别的一个动作。在Windows程序中,通过接受消息、分发消息、处理消息和用户进行交互的。10、基于对话框的应用程序的基本结构由2个派生类组成,简述这2个派生类的名称及作用。(1)应用程序类。由CWinApp派生,管理整个程序,显示对话框。 (2)对话框类。由CDialog类派生,负责管理对话框内的控件。11、为什么当应用程序向导生成MFC应用程序时,在源代码中找不到WinMain()函数?简述Windows应用程序的执行机制。(1)MFC将WinMain函数已封装在应用程序类中,在建立执行文件时连接到程序。(2)Windows应用程序的执行入口是WinMain函数。在MFC中,
15、通过封装的方法将WinMain函数隐藏到应用程序框架中。当执行应用程序时,首先创建应用程序对象,然后调用WinMain函数,WinMain函数首先调用应用程序类的成员函数Initlnstance完成初始化工作。随后,WinMain函数调用应用程序类的成员函数Run进入消息循环,检查应用程序的消息队列中是否有需要处理的消息。12、试述视图类的成员函数OnDraw0的功能是什么? 视图类的成员函数OnDraw用于输出数据。OnDraw函数中的pDC参数是一个指向CDC类的指针。当函数被调用时,OnDraw函数中所有绘图命令的结果都输出在pDC所代表的输出设备上。因此在屏幕显示、打印、打印预览等情况
16、下均使用OnDraw函数,从而实现了与设备无关的输出。 13、Visual C+中对话框内多个控件选取的方法及“主要控件”的作用。(1)在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,则被虚框所包围的控件将被选取。 (2)按住Shift键不放,然后用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。(3)用户选取多个控件后,“主要控件”起到了关键作用。设置的方法是按住Ctrl或Shift键,然后用鼠标单击所要指定的控件即可。14、文档类、主框架窗口类和视图类的结构是如何定义的?(1)当应用程序首次运行和生成新文档时,利用文档模板生成文档对象、视图对象和主框架窗口对象。(
17、2)文档模板类的构造函数的第2个、第3个和第4个参数分别提供文档类、主框架窗口类和视图类的运行类(CRUNTIMECLASS)指针,由宏RUNTIME_CLASS()取得。(3)AddDocTemplate函数将模板对象存放在应用程序对象中,当文档打开时模板可用。15、简述Visual C+对数据库的支持。(1)Visual C+为用户提供了ODBC、DAO及OLE DB三种数据库方式。(2)ODBC提供了应用程序接口(API),使得任何一个数据库都可以通过ODBC驱动器与指定的DBMS相联。 DAO类似于用Access或Visual Basic编写的数据库应用程序,它使用Jet数据库引擎形成
18、一系列的数据访问对象:数据库对象、表和查询对象、记录集对象等。(3)OLE DB提供一种统一的数据访问接口,并能处理除了标准关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录服务以及主机系统中的IMS和VSAM数据。四、分析与设计1、阅读下面的程序,试求:(1)在程序中画线处填入合适的语句。(2)分析程序的运行机制。class Base public: void fun() cout << "Base of fun"<<endl;class Derived:public Base void fun() /显示基类的成员函数fun c
19、out << "Derived of fun"<<endl;(1)填入的语句:Base:fun();。 (2)分析程序的运行机制:子类访问父类。2、阅读下面的程序,试求:(1)给出程序的运行结果。(2)指出程序的运行机制。#include<iostream.h>class A static int n;public:A()n=1;A(int num) n=num; void print() cout << n;int A:n=2;void main() A a,b(3);a.print();b.print();cout <
20、;< endl; (1)给出程序的运行结果:33。 (2)指出程序的运行机制:静态数据成员的使用。3、阅读下面的程序,给出程序的运行结果。 #include<iostream.h>int c;class A private:int a;static int b;public:A()a=0;c=0; void seta()a+; void setb()b+; void setc()c+; void display() cout << a <<" " << b <<" " << c
21、; ;int A:b=0;void main()A a1,a2;a1.seta();a1.setb();a1.setc();a2.seta();a2.setb();a2.setc();a2.display();程序的运行结果是 1 2 2 4、阅读下面的C+程序,并回答问题。问题说明:程序的功能是计算并输出圆(Circle)的面积。该程序定义了二个类:CShape和CCircle类。#include <iostream.h>class CShape / 基类public:virtual float area()/ 将area定义成虚函数 return 0.0;class CCirc
22、le:public CShape / 派生类public:CCircle(float r)R=r;float area()return (float)(3.14159265 * R * R);private:float R;void main()CShape *s;s = new CCircle(10);cout<<s->area()<<endl; / 通过基类指针调用试回答下列问题:(1)程序的运行结果。(2)如果将main()函数中的语句CShape *s;和cout<<s->area()<<endl;分别改为CShape s;和
23、cout<<s.area()<<endl;,会得到什么结果?为什么?(1)314.1592656 (2)结果为0.0。因为,虚函数的功能只有通过基类指针才能实现。5、阅读下面的Visual C+程序,并回答问题。问题说明:学生成绩录入是学生管理中经常遇到的问题。本程序使用了静态文本、编辑框、旋转按钮控件等控件。实现时,最关键的是如何将编辑框设置成旋转按钮控件的伙伴窗口。初始化函数OnInitDialog代码。BOOL CInputDlg:OnInitDialog() CDialog:OnInitDialog(); m_spinScore1.SetRange( 0, 15
24、0 ); m_spinScore2.SetRange( 0, 150 ); m_spinScore3.SetRange( 0, 150 ); return TRUE; 为控件IDC_SPIN_S1添加的UDN_DELTAPOS消息映射代码。void CInputDlg:OnDeltaposSpinS1(NMHDR* pNMHDR, LRESULT* pResult) NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; UpdateData(TRUE); m_fScore1 += (float) pNMUpDown->iDelta * 0.5f; if (
25、m_fScore1<0.0) m_fScore1 = 0.0f; if (m_fScore1>150.0) m_fScore1 = 150.0f; UpdateData(FALSE); *pResult = 0; 调用对话框代码。void CMainFrame:OnTestInput() CInputDlg dlg; if (IDOK = dlg.DoModal() / 获取对话框数据 CString str; str.Format("%s, %s, %4.1f, %4.1f, %4.1f",dlg.m_strName, dlg.m_strNO,dlg.m_fS
26、core1,dlg.m_fScore2,dlg.m_fScore3 ); AfxMessageBox(str); 试回答下列问题:(1)控件IDC_SPIN_S1的变量类别和变量类型。(2)函数UpdateData(TRUE)和UpdateData(FALSE)的功能。(1)变量类别: Control 变量类型:CSpinButtonCtrl (2)函数UpdateData(TRUE)的功能:将控件的内容保存到变量中。函数UpdateData(FALSE)的功能:将变量的内容显示在控件中。6、编写一个CRect类,代表一个矩形,要求CRect类中有代表矩形的左上角坐标(x1,y1)和右下角坐标
27、(x2,y2)的数据成员,并可以通过构造器为坐标赋初值,还要求CRect类中有两个成员函数RectHeight()和RectWidth(),通过这两个函数能得到矩形的高和宽。class CRect private:int x1,y1,x2,y2; public:CRect(int a1,int b1,int a2,int b2)x1=a1;y1=b1;x2=a2;y2=b2;int RectHeight()return (y2-y1);int RectWidth()return (x2-x1);7、定义一个学生类student,它含有私有数据成员:学号、姓名、年龄、成绩及公有成员函数:构造函数
28、、成员函数set()用于对私有数据成员赋值、成员函数show()用于显示学号、姓名、年龄、成绩等。在主函数中定义student类的对象,显示两个学生的有关信息。如有下述输出结果:学生1有关信息:学号:101姓名:lijun年龄:18成绩:85学生2有关信息:学号:102姓名:wangming年龄:19成绩:78#include<iostream.h>#include<string.h>class student private: int num;char name10; int age; int score;public: student(int x,char y,in
29、t z,int m ); void set(int x,char y,int z,int m); void show();inline student:student(int x,char y,int z,int m) num=x; strcpy(name,y); age=z; score=m;inline void student:set (int x,char y,int z,int m) num=x; strcpy(name,y); age=z; score=m;void student:show() cout<<"学号:"<<num<&
30、lt;endl; cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; cout<<"成绩:"<<score<<endl;void main()student t(101,"lijun",18,85);cout<<"学生1有关信息:"<<endl;t.show ();t.set(102,"wangming&quo
31、t;,19,78);cout<<"学生2有关信息:"<<endl;t.show();8、使用Visual C+编制程序实现的功能:设计进展条对话框。对话框内有一个进展条、一个静态文本和两个按钮。单击继续按钮,进展条向前进,单击后退按钮,进展条向后退,静态文本中还显示出进展条的百分比。程序运行界面如图所示。问题说明:(1)通过CProgressCtrl类的GetPos和GetRange来获取当前进展条当前位置和范围,并根据范围计算当前位置所处的百分比,然后将百分比转换成字符中,显示在文本控件中。(2)对话框中所需的控件定义如下表。添加的控件ID号标 题
32、其他属性静态文本IDC_STATIC_TEXT默认对齐设为Center,其余默认进展条IDC_PROGRESS1默认按钮(后退)IDC_BUTTON_BACK默认按钮(继续)IDC_BUTTON_GOON默认 (3)为CProgressCtrl类添加WM_INITDIALOG消息映射的初始化代码。BOOL CProgressDlg:OnInitDialog() CDialog:OnInitDialog(); m_Progress.SetRange( 0, 100 ); / 设置进展条范围 m_Progress.SetStep(5); / 设置进展条步长 m_Progress.SetPos(30
33、); UpdatePercentText(); return TRUE; (4)为CProgressDlg类添加一个成员函数 UpdatePercentText,用来反映当进展条位置变化后更新静态文本控件显示的百分比,其代码如下。void CProgressDlg:UpdatePercentText() int nPos = m_Progress.GetPos(); / 获取进展当前位置 int nLow, nUp; m_Progress.GetRange(nLow, nUp); / 获取进展条范围 m_strPercent.Format("%4.0f%",(float)n
34、Pos/(float)(nUp-nLow)*100.0); UpdateData(FALSE); 试求: (1)给出程序实现的主要步骤。 (2)函数void CProgressDlg:OnButtonBack() 的实现代码。(1)程序实现主要步骤。 创建一个默认的单文档应用程序。 向应用程序中添加一个对话框资源,创建此对话框类为CProgressDlg。 添加控件。 编写代码。 (2)函数void CProgressDlg:OnButtonBack() 的实现代码。void CProgressDlg:OnButtonBack() int nPos = m_Progress.GetPos();
35、 / 获取进展条当前位置 int nLow, nUp; m_Progress.GetRange(nLow, nUp); / 获取进展条范围 nPos = nPos-5; if (nPos<nLow) nPos = nLow; m_Progress.SetPos( nPos ); UpdatePercentText(); 9、大纲规定的教材中有关应用对话框和常用控件的设计。五、单选题1、下面程序的运行结果为( C ) #include<iostream.h> void main() for(int a=0,x=0;!x && a<=10;a+) a+; c
36、out<<a<<endl; A. 10 B. 11 C. 12 D. 02、下列程序的输出结果是( B ) #include<iostream.h> int min(int a,int B) if(a<B) return a;else return B;return 0; void main() cout<<min(1,min(2,3)<<endl; A. 0 B. 1 C. 2 D. 33、下列说法正确的是( B ) A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B. 内联函数在编译时是将该函数的目标代码插
37、入每个调用该函数的地方 C. 类的内联函数必须在类体内定义D. 类的内联函数必须在类体外通过加关键字inline定义4、下面对于友元函数描述正确的是( C )A. 友元函数的实现必须在类的内部定义 B. 友元函数是类的成员函数C. 友元函数破坏了类的封装性和隐藏性 D. 友元函数不能访问类的私有成员5、下列关于虚基类的描述,错误的是( B ) A. 设置虚基类的目的是为了消除二义性 B. 虚基类的构造函数在非虚基类之后调用 C. 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用 D. 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数6、下面关于类和
38、对象的描述中,错误的是( A ) A. 类就是c语言中的结构体类型,对象就是C语言中的结构体变量 B. 类和对象之间的关系是抽象和具体的关系 C. 对象是类的实例,一个对象必须属于一个已知的类 D. 类是具有共同行为的若干对象的统一描述体7、下面关于break语句的描述中,不正确的是( D )A. break可以用于循环体内 B. break语句可以在for循环语句中出现多次C. break语句可以在switch语句中出现多次D. break语句可用于if条件判断语句内8、下面关于数组的描述错误的是( D ) A. 在c+语言中数组的名字就是指向该数组第一个元素的指针 B. 长度为n的数组,下
39、标的范围是0一n-l C. 数组的大小必须在编译时确定 D. 数组只能通过值参数和引用参数两种方式传递给函数9、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( A )A. public B. protected C. private D. static10、下列程序的输出结果为( B ) #include<iostream.h> void main() char *a="hello","the","world" char *pa=a; pa+; cout << *pa &
40、lt;< endl; A. hello B. the C. world D. hellotheworld11、在C+语言中,数据封装要解决的问题是( D ) A. 数据的规范化 B. 便于数据转换 C. 避免数据丢失 D. 防止不同模块之间数据的非法访问12、如果类A被说明成类B的友元,则(D)A. 类A的成员即类B的成员 B. 类B的成员即类A的成员C. 类A的成员函数不得访问类B的成员 D. 类B不一定是类A的友元13、下面关于虚函数的描述,错误的是(B) A. 在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B. 基类中说明了虚函数后,派生类中对应的函数也必须
41、说明为虚函数 C. 虚函数可以是另一个类的友元函数,但不能是静态成员函数 D. 基类中说明的纯虚函数在其任何派生类中都必须实现14、下面关于c+语言的描述错误的是( B ) A. C+语言支持数据封装 B. C+语言中引入友元没有破坏封装性 C. C+语言允许函数名和运算符重载 D. C+语言支持动态联编15、下列关于多态性的描述,错误的是( C ) A. C+语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态绑定16、下列程序的运行结果为( B ) #include<i
42、ostream.h> void main() int a=2; int b=a+1; cout <<a/b<<endl; A. 0.66667 B. 0 C. 0.7 D. 0.6666666617、下面程序的运行结果为 ( D ) #include<iostream.h> void swap(int &a,int b) int temp; temp=a+; a=b;b=temp; void main() int a=2,b=3;swap(a,b); cout << a << ","<<
43、b <<endl; A. 2,3 B. 3,2 C. 2,2 D. 3,318、下面关于C+语言变量的叙述错误的是( B ) A. 在C+语言中变量分为auto,static,extern和register四种存储类型 B. 自动变量和外部变量的作用域为整个程序 C. 内部静态变量的作用域是定义它的函数 D. 外部静态变量的作用域是定义它的文件19、在C+语言程序中,对象之间的相互通信通过( C ) A. 继承实现 B. 调用成员函数实现 C. 封装实现 D. 函数重载实现20、在C+语言类体系中,不能被派生类继承的有( B )A. 转换函数 B. 构造函数 C. 虚函数 D. 静
44、态成员函数21、下面程序的运行结果是( C ) #include<iostream.h> void main() int i=1; while(i<=8) if(+i%3!=2) continue; else cout << i; A. 25 B. 36 C. 258 D. 36922、已知有定义, 则下列选项错误的是( B ) const int D=5; int i=1; double f=0.32; char c=15; A. +i; B. D-; C. c+; D. -f23、下面程序的运行结果为( D ) #include<iostream.h&g
45、t; void main() char a='3' switch(a) case'3':cout<<"3" case'2':cout<<"2"break; default:cout<<"1" A. 3 B. 321 C. 31 D. 3224、下列描述中哪个是正确的?( B ) A. 私有派生的子类无法访问父类的成员B. 类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的 C. 私有派生类不能作为基类派生子类
46、D. 私有派生类的所有子孙类将无法继续继承该类的成员25、如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( D ) A. 一元运算符 B. 二元运算符 C. 选项A)和选项B)都可能 D. 重载错误26、Windows编程中常用的基本数据类型有UINT类型,对应C+中的基本数据类型是( D ) A. unsigned shortB. unsigned charC. unsigned longD. unsigned int27、口令设置在编辑框中不同于一般的文本编辑框,每个字符都被一个特殊的字符代替显示,这个特殊的字符称为口令字符。在Visual C+中,定义口令字符的函数
47、原型如下void SetPasswordChar( TCHAR ch ); 其中参数ch表示设定的口 令字符。当ch = 0时,编辑框内 (C ) A. 显示默认口令字符 B. 显示任意字符 C. 显示实际字符 D. 显示“*”字符28、MFC中的CView类及其它的派生类封装了视图的各种不同的功能。对于CView:OnUpdate函数,下面说法正确的是 (C )A. 如果应用程序调用了CDocument:UpdateAllViews函数,就会调用一部分OnUpdate函数B. 如果应用程序调用了CDocument:UpdateAllViews函数,就会调用一部分相应的OnUpdate函数C.
48、 这是一个虚函数。 D. 这是一个内联函数。 29、下面是使用Visual C+中通用对话框的一段编程测试代码:void CMainFrame:OnTestDlg() CString filter; filter = “文本文件(*.txt)|*.txt|C+文件(*.h,*.cpp)|*.h;*.cpp|" CFileDialog dlg (TRUE, NULL, NULL,OFN_HIDEREADONLY, filter); if (dlg.DoModal () = IDOK) CString str; str = dlg.GetPathName();AfxMessageBox(
49、str); 说明其中AfxMessageBox(str)函数的功能是 ( B ) A. 弹出一个文件对话框 B. 弹出一个消息对话框 C. 弹出一个信息对话框D. 弹出一个查询对话框30、在Visual C+中,当菜单创建后,用户可以调用AppendMenu函数在菜单的末尾处来添加一些菜单项。对于下面的函数 BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0,LPCTSTR lpszNewItem = NULL ); 其中nFlags表示要新增加的菜单项的状态信息。下面要表示菜单项灰显的属性是 (A )A. MF_GRAYED B. MF_BYP
50、OSITION C. MF_POPUP D. MF_COMMAND31、在Visual C+中,一种方法是使用编辑框CEdit类的相关成员函数来获取文本。对于下面的一段代码:char str100; if (m_Edit.GetLineCount()>=2) / 判断编辑框的文本是否是两行以上 int nChar nChars = m_Edit.LineLength(m_Edit.LineIndex(1); / 获取第二行文本的字符个数 m_Edit.GetLine(1,str,nChars);/ 获取第二行文本 strnChars = '0' MessageBox(st
51、r);其中,语句strnChars = '0'的功能是 (D )A. 显示编辑框中第二行的文本内容B. 获得编辑框中第二行的文本字符数 C. 判断编辑框中的文本是否结束D. 设置编辑框中的文本结束符32、在Visual C+中,当菜单创建后,用户可以调用AppendMenu函数在菜单的末尾处来添加一些菜单项。对于下面的函数 BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0,LPCTSTR lpszNewItem = NULL ); 其中nFlags表示要新增加的菜单项的状态信息。下面要表示菜单项以ID标识的属性是 (D )A. MF_GRAYED B. MF_BYPOSITION C. MF_POPUP D. MF_COMMAND33、在Visual C+中,编辑框通过CEdit类的Copy、Paste和Cut成员函数来实现文本的复制、粘贴、剪切的操作,并还自动支持键盘快捷操作,其中Paste对应的快捷健为 ( B )A. Ctrl+C B. Ctrl+V C. Ctrl+P D. Ctrl+X六、题型举例(2007年4月自考题(部分)一、单项选择题(本大题共15小题,每小题2分,共30分)1、C+语言对c语言做了很多改进,c+语言相对于C语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能物流系统合作协议合同3篇
- 2025年度电子设备租赁与维保服务电子合同
- 二零二五年高空玻璃安装与节能改造合同3篇
- 二零二五版高端住宅小区保安劳务派遣管理服务协议2篇
- 2025年代理协议违约处理办法
- 2025年合资投资协商协议
- 2025年办公家具租赁期间的责任划分协议
- 2025年度临时工岗位变动免责责任协议4篇
- 2025年专业人才招聘协议
- 2025年度磷矿石矿山安全培训与咨询服务合同4篇
- 佛山市斯高家具全屋定制水平考试
- 摇臂钻床日常点检表
- 经济开发区扩区可行性研究报告
- 会计职业道德课件(完整版)
- 金属探测器检查记录表
- 2022年五年级数学兴趣小组活动记录
- Q∕GDW 12127-2021 低压开关柜技术规范
- 商品房预售合同登记备案表
- 版式设计发展历程-ppt课件
- 通信机房蓄电池放电试验报告
- 病原细菌的分离培养
评论
0/150
提交评论