东华理工测绘学院C++复习题.docx

上传人:b****5 文档编号:11834546 上传时间:2023-04-05 格式:DOCX 页数:51 大小:61.15KB
下载 相关 举报
东华理工测绘学院C++复习题.docx_第1页
第1页 / 共51页
东华理工测绘学院C++复习题.docx_第2页
第2页 / 共51页
东华理工测绘学院C++复习题.docx_第3页
第3页 / 共51页
东华理工测绘学院C++复习题.docx_第4页
第4页 / 共51页
东华理工测绘学院C++复习题.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

东华理工测绘学院C++复习题.docx

《东华理工测绘学院C++复习题.docx》由会员分享,可在线阅读,更多相关《东华理工测绘学院C++复习题.docx(51页珍藏版)》请在冰豆网上搜索。

东华理工测绘学院C++复习题.docx

东华理工测绘学院C++复习题

填空题:

1.创建一个完整的窗口,需要经过哪四个步骤:

设计一个窗口类,注册一个窗口类,创建窗口,显示及更新窗口。

2.结构体默认情况下,其成员是公有的。

类默认情况下,其成员是私有的。

3.BOOLcreat1LPCTSTRLpszcaption,DWDRDdwstyleCONSTrectCwnd*pparentwndUNINTnzd

4.创建文本插入符用CreatSdidcaret()函数来实现。

5.一个属性表由一个或者多个属性页组成。

6.重载构成的条件:

函数的参数类型,参数个数不同。

7.:

叫做作用域标识符,用于指明一个函数属于哪个类或一个数据成员属于哪个类,:

前面如果不跟类名,表示全局函数。

8.利用MFC实现功能的方法:

9.SDK全局函数2)CDC类的3)CclientDC类4)CwindowDC类

10.对话框控件的访问共有七种方式:

其中第一种方式用到了GetDlgItem(),和Get(set)windowText()函数。

11.当利用Create函数创建非模态对话框时,还需要调用showwindow函数将这个对话框显示出来。

12.打开Classview选项卡,可以看到基于对话框的Test应用程序有三类:

CAboutDlg.CtestApp和CtestDlg

13.分隔栏在子菜单中是占据索引位置。

14.响应Test菜单项命令的顺序依次是视图类.文档类.框架类.应用程序类。

15.前缀fn.h.m_.p含义分别是函数.句柄.类的数据成员.指针。

16.变量包含三个部分:

名称.类型和值。

17.重载构成的条件:

函数的参数类型、参数个数不同,才能构成函数额度重载。

可以利用SDK全局函数、MFC的CDC类、MFC的CClientDC类、MFC的windowed类实现画线功能。

设置一个标记菜单,需要使用CMenu类的checkMenuItem这个函数,实现图形标记菜单项的效果,可以利用CMenu类的SetMenuItemBitmaps函数。

对话框的两种类型:

模态对话框和非模态对话框。

结构体的关键字:

struct,类的关键字是class。

函数调用过程的3个步骤分为:

函数调用(或参数传递)、函数体执行、返回。

18.类的私有成员只能被该类的成员函数或友函数访问

19.创建一个完整的窗口,需经过一下四个步骤:

设计一个窗口、注册窗口类、创建窗口、显示及更新窗口。

20.类和结构的定义除了实用关键字class和struct不同之外,更重要的是在成员的访问控制方面有所差异。

21.结构体默认情况下,其成员是公有(public)的,类默认情况下,其成员是私有(private)的。

22.TranslateMessage函数并不会修改原有的消息,它只是产生新的消息并投递到消息队列中

23.在一个类当中,公有成员是可以在类的外部进行访问的,而私有成员就只能在类的内部进行访问。

24.构造函数的作用是对对象本身做初始化工作,也就是给用户提供初始化类中成员变量的一种方式。

25.析构函数是反向的构造函数,析构函数不允许有返回值,更重要的是析构函数不允许带参数,并且一个类中,只能有一个析构函数。

26.凡是从CWnd派生的类,他们既可以接收标准消息,也可以接受命令消息和通告消息。

1.一个windows应用程序至少要有一个(A)。

A.窗口B.句柄C.主函数D.消息

2.窗口是通过(A)句柄来标识的。

A.窗口B.光标C.图标D.消息

3.下列哪项不是MSG结构体的成员变量(D).

A.HwndB.Message

C.WparamD.Hwstance

4.画笔的宽度(D)

A.小于1B.大于1C.等于1D.小于等于1

5.点线的线型为(B)

A.PS-DATHB.PS-DOT

C.PS-SOLLPD.PS-Point

6.下列参数不属于EnableMenuItem函数的为(D)。

A.MF_BYCOMMAND

B.MF_BYPOSITION

C.MF_GRAYEDD.MF_CHECKED

7.【新建】菜单项的标识为(A)

A.ID_FILE_NEWB.ID_FILE_OPEN

C.0D.1

8.单文本类的MFCAPPWizard(exe)工程的Menu工程默认运行界面中新建中打印的索引号为(B)

A.4B.5C.6D.3

9.CMenu类的成员函数(A)可以设置菜单项的状态。

A.EnbleMenuIte

B.SetMenuItemBitmaps

C.SetDefaeultItm

D.CheckMenuItem

10.在MFC编程过程中,对控件的操作都是通过相关的(A)来完成。

A.MFC类B.Cprop1

C.CcomboRoxD.Cpropertysheet

11.下列哪为指定窗口类的图标句柄(B)

A.HcursorB.hico

C.hmstanceD.hbrbackground

12.Windowc应用程序的消息处理机制(A)

A.操作系统—消息队列—应用程序—操作系统—窗口过程

B.操作系统—应用程序—消息队列—窗口过程

C.应用程序—消息队列—操作系统—窗口过程

D.应用程序—操作系统—消息队列—窗口过程

13.在输出流中插入一个换行,将使用(C)

A.enterB.Next

C.endlD.Shift

14.RGB宏有三个参数,分别代表红,绿,蓝三个颜色的值BYiE类型,取值范围(D)

A..0~128B.0~156

C.0~256D.0~255

15.一个子菜单可以有(A)个默认菜单项

A.1B.2C.3D.4

16.UI指的是(B)

A.禁用菜单项B.用户接口

C.默认菜单项D.移除菜单项

17.GetSubMenu函数是(B)的成员函数

A.CWndB.CMenu

C.CViewD.CFrame

18.SetDefaultItem函数的第二个参数的默认值为(B)

A.TrueB.CMenu

C.CViewD.CFrame

19.按钮的单击:

列表框的选择这类消息都属于(B)

A.标准消B.通造消息

C.命令消息D.字符消息

20.为了还原对话框需要保存其原始位置对话框的原始位置通过调用(A)函数能得到

A.GetWindowRectB.SetDlgItemText

C.GetDlgItem

D.SetDlgItemText

21.为了建立一个属性表单,首先要建立一个()对象。

A.CpropertySheetB.CpropertyPageC.CpropersSheetD.CpropView

22.CMenu类的成员函数(A)可以设置菜单项的状态。

A.EableMenuItem

B.SetMenuItemBotmaps

C.SetDefaultItem

D.CheckMenuItem

23.在MFC编程中,对控件的操作都是通过相关的(A)来完成。

A.MFC类B.Cpropl

C.CcomboBoxD.CpropertySheet

24.4.创建图形插入符用下列那个函数来实现(B)。

A.CreatSolidCaretB.CreatCaret

C.CetMetricsD.ShowCaret

25.5.自动控制文字变色的过程通过下列哪个函数来实现(D)

A.DrawText函数B.OnDraw函数

C.OnChar函数D.SetFimer函数

26.6.运用SetTimer函数实现的计时器功能中时间间隔以(D)为单位。

A.小时B.分C.秒D.毫秒

27.(C)不允许带参数,并且在一个类中只能有一个。

A.成员函数B.构造函数

C.析构函数D.主函数

28.c++中输出x的表示方法为(C)

A.A.cout->xB.cin->x

C.cout<

29.运行程序时,程序执行的顺序是(C)

A.theApp->CtestApp->Winmain->CwinApp

B.CtestApp->theApp->CwinApp->Winmain

C.theApp->CwinApp->CtestApPP->Winmain

D.CtestApp->CwinApp->theApp->Winmain

30.下列哪项不是MFCClassWixarad对话框的选项卡(C)

A.MessageMapsB.MemberVariables

C.ClassNameD.ClassInfo

31.如果类中的所有成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A)

A.publicB、protected

C、privateD、static

32.下列类定义的叙述中正确的是(D)

A.数据成员必须被声明为私有的

B.成员函数只能在类体外进行定义

C.类成员的默认访问权限是保护的

D.类定义中包括数据成员和函数成员的声明

33.下列对类的构造函数和析构函数的叙述,正确的是(A)

A.构造函数可以重载,析构函数不能重载

B.构造函数不能重载,析构函数可以重载

C.构造函数可以重载,析构函数也可以重载

D.构造函数不能重载,析构函数也不能重载

34.如果类中的所有成员在定义时都没有使用关键字public、private和protected则所有成员变量默认定义为(C)

A、publicB、protected

C、privateD、static

35.下列有关继承和派生的叙述中,正确的是(D)

A.作为基类的类不能被实例化

B.派生类不能访问基类的保护成员

C.虚函数必须在派生类中重新实现

D.派生类应当向基类的构造函数传递参数

36.下列关于派生类的构造函数和析构函数中,错误的是(D)

A.派生类的构造函数会隐含调用基类的构造函数

B.如果基类中没有默认构造函数,那么派生类必须定义构造函数

C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

37.C++语言中的标示符只能是字母、数字、下划线三种字符组成,且第一个字符(B)

A.必须是字母 B.必须是字母或下划线 

C.必须为下划线 D.可以是字母、数字和下划线中任一种字符 

38.类的实例化是指(B)

A.定义类  B创建类的对象 

C.指明具体类  D.调用类的成员

39.一个类的析构函数是在(C)时被自动调用。

A.使用该类对象前

B.使用该类对象后

C.该类对象撤消

D.定义该类对象

40.关于类和对象的说法不正确的是(B)

A.对象是类的一个实例;

B.一个类只能有一个对象;

C.一个对象只能属于一个具体的类;

D.雷雨对象的关系和数据类型与变量的关系是相似的。

41.下列不是构造函数的特征的是(D)

A.构造函数的函数名和类名相同;

B.构造函数可以重载;

C.构造函数可以设置默认参数

D.构造函数必须指定类型说明。

42.运行是的多态性指(B)

A.用指向对象的基类指针或引用一个纯虚函数;

B.用指向对象的基类指针或引用一个虚函数;

C.以任何方式调用一个纯虚函数

D.以任何方式调用一个虚函数。

43.继承具有(B)即当基类本身也是某个类的派生类时,底层的派生类也会自动继承简介基类的成员

A.规律性B.传递性C.重复性D.多样性

44.(A)是析构函数的特征

A.一个类中稚嫩定义一个析构函数

B.析构函数名与类名相同

C.析构函数的定义只能在类体内

D.析构函数可以有一个或多个参数

45.下列输出字符“&”的方法中,不正确的是(C)

A.cout<<’&’

B.Cout<

C.Cout.put(‘&’)

D.Charc=’&’;cout<

46.如果类中所有成员并定义时都没有使用关键字public、private和pratected,则所有成员默认定义为(B)

A.PublicB.Private

C.PratectedD.Static

47.关于析构函数,下列说法不正确的是(B)

A.类中有且仅有一个析构函数

B.析构函数没有返回值

C.析构函数在对象消失时被自动执行

D.析构函数可以没有参数

48.当在使用类模版时,类的模版本身被实例化成了一个具体的(A)

A.类实B.例模版C.类D.对象

49.通过调用(C)函数,能够设置本地计算机的时间

A.SetSystenTime

B.SetSystemtime

C.SetLocalTime

D.SetLocalTime

50.说明对象或变量初始化后不会被修改的关键字是(B)

A.PublicB.ConstC.StaticD.Inline

51.下列关于虚函数的描述中,正确的是(A)

A.虚函数不得是静态成员函数

B.只能通过指针或引用调用虚函数

C.从虚基类继承的函数都是虚函数

D.抽象类中的成员函数都是虚函数

52.在C++语言中,结构体是关于关键字(C)声明的类

A.ClassB.StaticC.StructD.Private

53.每一个MFC程序实例有多少个派生类的实例化对象(C)

A.一个或多个B.两个

C.有且只有一个D.多个

54.程序类对菜单命令的响应顺序是(D)

A.doc->view->Frame->app

B.View->Frame->doc->app

C.Frame->doc->View->app

D.View->doc->Frame->app

55.利用Create函数创建非模态对话框时,还需要调用什么函数将这个对话框显示出来(A)

A.Showwindow

B.Showcreate

C.MessageBox

D.UpdateWindow

简答题

1.在VC++中,工程与各种源文件之间是什么关系?

VC++吧要完成的某个程序设计任务称之为工程,要进行程序设计先要建立一个工程,即首先要搭建一个空框架。

要完成具体的任务还必须往那个工程里添加源文件(如:

cpp文件.c文件.h文件等)。

工程管理添加在工程下的各种源文件,这些源文件有机会结合,通过翻译和连接生成课执行文件。

2.类的虚拟性和派生性在程序设计中各起到什么作用?

类的派生性的作用:

派生性能从一个已经存在的类(基类)派生出一个新的类(派生类),派生类可以继承基类的部分或全部数据成员和成员函数,再增加新的数据成员和成员函数。

从而减少了程序设计的工作量,提高了程序代码的重要性。

类的虚拟性的作用:

在windows程序设计中,为实现某个功能,系统预先设置了一序列的函数调用流程。

3.消息结构体中最重要的数据成员是那几个?

简述消息附加参数的作用。

消息结构体的定义为:

TypedefstructtagMSG

{

HWNDhwnd;

UINTmessage;

WPARAMwParam;

LPARAMlParam;

DWORDtime;

POINTpt;

}MSG;

其中最重要的3个数据成员是message,wParam和lParam。

wParam和lParam代表消息的附加参数,有时消息处理的过程中需要这两个参数,如WM_CHAR消息标识符(字符消息标识符),当按下键盘上的某个字符键时便会产生这一消息标识符,但按下所有字符键都会产生WM_CHAR消息标识符,在字处理程序仅靠WM_CHAR是无法确认按下那个字符键的。

WM_CHAR消息标识符所带的附加参数wParam中便存放了字符信息,具体来说wParam中存放了字符的ASCII码,据此以判断按下了那个字符键。

4.模态对话框和非模态对话框的区别?

(1)模态对话框,弹出后该程序的其它窗口就呈不可用的状态,原来程序暂停执行,直到这个模态窗口关闭后才回到原来程序继续。

(2)非模态的就是直接显示出来,然后原来的程序继续执行下面的语句,而且其它窗口也呈可用状态。

5.MFC消息映射机制的具体实现方法。

在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,即消息映射表。

在消息映射表中,消息与对应的消息处理函数指针是成对出现的。

某个类能处理的所有消息及其对应的消息处理函数的地址都列在这个类对应的静态表中。

当有消息需要处理时,程序只要搜索该消息静态表,查看表中是否含有该消息,就可知道该类能否处理此消息。

如果能处理该消息,则同样依照静态表能很容易找到并调用对应的消息处理函数。

6.C++窗口类对象与窗口的区别?

C++窗口类对象与窗口并不是一回事,它们间唯一的关系是C++窗口类对象内部定义了一个窗口句柄变量,保存了与这个C++窗口类对象相关的那个窗口的句柄。

窗口销毁时,与之对应的C++窗口类对象销毁与否,要看其生命周期是否结束。

但C++窗口类对象销毁时,与之相关的窗口也将销毁。

7.静态成员函数和非静态成员函数的区别?

静态成员函数和静态成员变量属于类本身,在类加载的时候,即为它们分配了空间,所以可以通过类名:

函数名或类名:

变量名来访问。

而非静态成员函数和非静态成员属于对象的方法和数据,也就是应该首先产生类的对象,然后通过类的对象去引用。

8.构造函数和析构函数的作用是什么?

什么时候需要自己定义构造函数和析构函数?

 

构造函数的作用:

用于新建对象的初始化工作。

析构函数的作用:

用于在撤销对象前,完成一些清理工作,比如:

释放内存等。

 

每当创建对象时,需要添加初始化代码时,则需要定义自己的构造函数;而对象撤销时,需要自己添加清理工作的代码时,则需要定义自己的析构函数。

9.为什么一般把快捷键和图标资源的ID定义为与菜单的ID相同?

图标资源是以位图形式保存的,这一位图资源会放在工程的那个文件夹中?

把快捷键和图标资源的ID定义为与菜单的ID相同,原因是在用LoadFrame()函数装载菜单时也可以同时装载这两种资源,图标资源是以位图形式保存的,这一位图资源会放在工程的资源文件夹中。

10.3.什么是简单继承?

什么是多重继承?

在软件开发过程中,继承有什么好处?

 

(1)简单继承:

派生类的基类只有一个的继承方法。

(3分)  

(2)多重继承:

派生类的基类同时有多个时的继承方法。

(3分) 

(3)继承的好处:

由于可以利用已有的软件基础来进行新的软件开发,所以能提高软件开发效率和软件质量。

11.AppWiard和ClassWizard的作用是什么?

AppWiard负责创建应用程序框架,ClassWizard可以让程序员以交互式方式网应用程序框架里添加各种资源、消息和处理函数等。

12.API应用程序中WinMain()函数和WndProc()函数的作用分别是什么?

WinMain()函数负责建立窗口和建立消息循环,WndProc()函数负责消息的处理。

13.构成函数的覆盖的条件为:

基类函数必须是虚函数(使用Virtual关键字进行声明)发生覆盖的两个函数要分别位于派生类和基类中函数名称与参数列表必须完全相同

编程题

1.(5分)假设已有图形IDB_BITMAP,在oncreate函数中,创建该图形的插入符。

答:

在view类的头文件:

private:

(Bitmapbitmap);

在oncreate函数中:

Bitmap.LoadBitmap(IDB_BITMAP1);

Createcaret(&bitmap);

Showcaret();

2.假设其他函数都已编辑,只需编辑ontimer就可以完成将IDS_STRINGVC的字符串以左输出的方式输出(m_nWidth每次增加5,输出的颜色为红,下面200处输出)

m_nWidth+=5;

CClientDCdc(this);

TEXTMETRICtm;

dc.GetTextMetrics(&tm);

CRectrect;

rect.left=0;

rect.rtop=200;

rect.bottom=rect.top+tm.tmheight;

dc.SetTextColor(RGB(255,0,0));

CStringstr;

str.LoadString(IDS_STRINGVC);

dc.DrawText(str,rect,DT_LEFT);

3.(15分)在onchar中实现“回车到下一行”,“退格”等功能。

(字体为300,“华文行楷”,定义cpoint为m_peorigin)

答:

CClientDCdc(this);

CFontfont;

font.CreatepointFont(300,”华文行楷”,NULL);

CFont*poldFont=dc.Selectobject(&font);

TEXTMETRICtm;

If(0x0d==nchar)

{m_strLine.Empty();

m_Ptorigon.y+=tm.tmHeight;}

elseif(0x08==nchar)

{COLORREFclr=dc.SetTextcolor(dc.GetBKColor());

dc.TextOut(m_ptorigin.x,m_ptorigin.y,m_strLine);

m_strLine=m_strLine.Left(m_strLine.GetLength()-1);dc.SetTextColor(clr);}

else{m_strLine+=nchar;}

dc.TextOut(m_ptorigin.x,m_ptOrigin.y,m_strLine);

dc.Selectobject(poldFont);

4.如何在CDrawView类中实现划线功能,在消息响应函数OnLButtonUp中添加程序?

(已经在CDrawView类添加了一个新的成员变量m_ptOrigin,此变量的类型设置为CPoint,并且访问权限为Private,并且已在消息响应函数OnLButtonDown中保存了鼠标按下点的信息)

voidCDrawView:

:

OnLButtonDown(UINTnFlags,CPointpoint)

{m_ptOrigin=point;

CView:

:

OnLButtonDown(nFlags,point);}

voidCDrawView:

:

OnLButtonUp(UINTnFlags,CPointpoint)

{CView:

:

OnLButtonUp(nFlags,point);}

答案:

1.HDChdc;

hdc=:

:

GetDC(m_hWnd);

MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);

LineTo(hdc,point.x,point.y);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1