C精简复习资料_第1页
C精简复习资料_第2页
C精简复习资料_第3页
C精简复习资料_第4页
C精简复习资料_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、填空题

1、C++用流输入输出,要求包含iostream.h头文件,并使用命名空间。在VS2008的控制台窗

口中使用C++编程应在程序开头加上:

#include<iostream>

usingnamespacestd;

然后使用cout表示标准输出,cin表示标准输入。

2、C++引入引用类型。引用类型的变量或参数相当于它所引用变量的别名,本质上相当于一个指

针(使用时不需要用指针对应的运算符),并不量要占该数据类型变量相应的独立的存储空间。

例如:intx,&y=x;这时y就是对x的引用,给y赋值就是给x赋值,值存入x对应的存

储空间中。

3、函数重载。在C++中,可以定义两个或多个函数名相同,但参数个数或参数类型不同的函数,

这称为函数重载。在程序被编译时,编译程序会根据调用函数时的函数名和参数个数及参数类

型选择调用哪个函数。

4、函数默认参数。在C++中,可以将函数的参数自右向左依次指定参数的默认值,这样在函数

调用时如果参数值就是默认值时就可以不传递参数,如果调用函数时不使用默认值,则传递自

己的实参。

5、面向对象编程中将对象的共有特征抽象为类。有封装、继承和多态性三大特征。

6、C++中类定义的基本格式。

①在类外定义类的成员函数时,应当使用上来标识该函数为特定类的成员。

②在类定义的收大括号后面一定要加分号。

7、构造函数和析构函数的特征。

①假定MyClass为一个类,则执行:MyClassa|3J,*p[2];语句时,自动调用该类构造函

数的次数为3o(a数组的三个元素在自动创建时会调用构造函数,而p指针数组并没有创建

对象,所以没有调用构造函数)

②类AB的缺省构造函数和析构函数是AB(M1~AB()。

③类的析构函数一般用来释放对象占用的存储空间,可以自己定义特定的函数体进行相关操作。

8、友元函数特点。

①友元函数不是类的成员函数;

②类的友元函数可以访问类的所有访问属性的成员。

类成员的访问属性有privale,prolecied,public三种(默认时在类中定义的项都是私有的)

private(私有):成员变量和成员函数只能被该类本身声明的成员函数访问

protected(保护):成员除了可被本类中的成员函数访问外,丕可以被本类派生的类的成员函数

访问,因此用于类的继承

public(公共):成员可以被本类以外的函数访问,是类与外部的接口

10、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,

首先执行基类的对象成员的构造函数,接着执行基类的构造函数然后执行派生类的对象

成员的构造函数,最后才执行派生类的构造函数。

11、消息循环的处理过程为:GetMessage函数不断侦察应用程序的消息队列,若队列为空,该

函数一直运行,不返回;一旦发现队列不为空,便取出•条消息,把它拷贝到msg结构变量中,

同时该函数返回TRUE;得到消息msg后,TranslatcMcssagc把来自键盘的命令翻译成

WM_CHAR消息命令形式。DispatchMcssage函数通知Windows把每个消息分发给相应的窗

□函数。应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗

□函数经常被称为网调函数。

12、消息包括窗口管理消息、用户消息、系统消息、控件消息等。其中用户消息包括键盘

和鼠标的输入。这•类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序

消息队列中,由程序来处理消息:控件消息用来与Windows的控件对象,如列表框、按钮、

复选框等进行双向通信。当用户在列表框中改动当前选择或改变了复选框的状态时发出此类消

息。

二、问答题

1、在窗口程序的消息处理函数中要有一个对DeAVindowProc函数的调用,为什么要调用这个函数?

答:DefWindowProc是系统默认的窗口消息处理函数,在窗口应用程序中有些消息在我们定义的窗

口函数(消息处理函数)中处理,有些消息由操作系统来处理,所有应用程序自己不处理的消息

都要交给DefWindowProc函数处理,这样保证所有发送到该窗口的消息均得到处理。

2、简述WinMain入口函数和WndProc窗口函数的结构及功能。

答:WinMain入口函数有四个参数:HINSTANCE、HINSTANCE.LPCWSTR.int0该入口函数有

三个基本组成部分:函数说明,初始化和消息循环,功能:注册窗口类,建立窗口及执行必要的

初始化,进入消息循环,根据接受的消息调用相应的处理过程,当消息循环检索到WM_QUIT时

终止程序运行。WndProc窗口函数有四个参数:HWND、UINT、WPARAM、LPARAM。该窗口

的数定义了应用程序对接收到的不同消息的响应,包含了对各种口」能接收到的消息的处埋过程。

WndProc函数由一系列case语句组成。每一条case语句对应一种消息,当应用程序接收到一

个消息时,相应的case语句被激活并执行相应的响应程序模块。

3、什么是图形刷新?在什么情况下需要进行刷新?

答:图形刷新是在Windows系统中的窗口程序在移动位置、部分被覆盖后需要恢复、被对象穿越

后恢复时重新完整地显示窗口的行为。在上述三种情形需要刷新,另外在程序中如果需要更新用

户界面的显示,也可以主动刷新。

4、在单文档MFC应用程序中创建及使用对话框的步骤是什么?以单击文档弹出一个模式对话框

为例。

答:①首先创建一个单文档的工程文件。

②从资源视图里插入Dialog,添加需要的控件,创建好对话框资源。

③为对话框定义一个类,例如MyDigo

④使用对话框类。为View类的消息WM_LBUTTONDOWN添加消息响应函数,加入代码

Mydlgdig;dlg.DoModal()(>

5、按钮控件分为哪几类?有什么痔点?

答:按钮控件分普通按钮、单选按钮、复选按钮、组框和自绘式按钮。

a)普通按钮外形为矩形条,按钮上可设置文本、图标或位图,帮助用户触发指定动作;

b)单选按钮外形为左侧小圆框和右侧文本,当选中时圆框加点显示,同一组圆按钮所包含的个

选项之间具有互斥的性质;

c)复选按钮外形为左侧小方框和右侧文本,当选中时方框中出现J,可以选择其中一个或多个

选项;

d)组框外形为左上角包含文本的矩形框,主要在对话框中起分割区域作用:

e)自绘式按钮是指由程序而不是系统负责重绘的按钮。

6、一个Win32应用程序的组成及结构。

答:一个Win32应用程序由C语言源程序文件、头文件、模块定义文件、资源描述文件、项目文件组

成。由WinMain入口函数和WndProc窗口函数构成基本框架,包含各种数据类型、数据结构和

函数,WinMain入口函数和WndProc窗口函数是构成Windows应用程序的主体。程序包括窗口、

事件驱动.句柄.Windows消息。

三、程序题

1、已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有

Calculate()

函数计算对象的周长请设计Rectangle类和Circle类。要求:

1设计合适的私有成员数据;

2设计合适的构造函数初始化数据:

3设计计算周长的Calculate。函数;

4设计测试mam函数,可以输出矩形和圆的周长。

#include<iostream>

usingnamespacestd;

classShape

(

public:

ShapeOO

〜Shape。。

virtualfloatCalculate()=O;

);

答:

ClassRectangle:publicShape

private:

floatL,W;

public:

Rectangle(floati,floatj)〃构造函数,初始化宽和高

(

L=i;

W=j;

)

-Rectangle()O

floatCalculate()〃函数重载,计算矩形的周长

(

return2*(L+W);

)

);

ClassCircle:publicShape

(

private:

floatR;

public:

Circle(floatr)〃构造函数,初始化圆的半径

(

R=r;

)

floatCalculate()〃函数重载,计算圆的周氏

(

return3.14*2*R;

)

);

voidmain()

(

Shape*sp;

sp=newCircle(lO);

cout<<sp->Calculate()<<endl;

sp=newRectangle(6,4);

cout<<sp->Calculate()<<endl;

)

2、简单计算程序界面如下图所示,x对•应编辑框控件的ID为ICC_EDITL对应值类型的成员变量

m_x(double);y对应编辑框控件的ID为IDC.EDIT2,对应值类型的成员变量m_y(double);

z对应的编辑框控件的ID为IDC.EDIT3,对应值类型的成员变量m_z(double)°”Z=XXY"按

钮的功能是将x.y相乘,“Z=X+Y”按钮的功能是将x,y相除,并将结果在z对应的编辑框

IDC_EDIT3显示出来。写出“Z二XXY“按钮和"Z二X+Y”按钮对应的代码。

voidCMu]D1gDlg::OnButtonMul()//"Z二XXY"按钮

{)

voidCMulDlgDlg::OnButtonDiv()//"Z=X+Y”按钮

()

解答:

voidCMulDlgDlg::OnButtonMul()

(

UpdateData(TRUE);〃将控件中门输入修改变量俏

m_z=m_x*m_y;

UpdateData(FALSE);//将变一值的修改反映到控件

)

voidCMulDlgDlg::OnButtonDiv()

(

UpdateData(TRUE);〃将拧:仔」।J徜入修L攵变吊行

讦(m_y)

{

m_z=m_x/m_y;

UpdateData(FALSE);〃将变..的修改反映到控件

)

else((CEdit*)GetDlgltem(IDC_EDIT3))->SetWindowText(L"Error");

}

3、下面是一个基于对话框的应用程序,用来求解一元二次方程的根。当用户在A、B、C三个编辑

框中输入3个参数后,单击“计算”按钮,将显示出该方程的根在XI和X2编辑框中.各控件对

应的成员变量见下表:

要实现当点击“计算“按钮时计算出一元二次方程AX2+BX+C=O的解,将解在下面两个文本框

中显示。请编写"计算”按钮的消息处理程序。

voidCRootDlgDlg::OnButtonCal()

{)

解答:

voidCRootDlgDlg::OnButtonCal()

(

doubledelta,xl,x2;

UpdateData⑴⑴E);//将控件中的输入传给变量

delta=mb*mb+4.0*ma*me;

if(delta>=0)

(

xl=(-m_b+sqrt(delta))/2;

x2=(-m_b-sqrt(delta))/2;

m_xl.Format(L^%.21f*,xl);

rn_x2.Format(LX21T,x2);

else

(

m_xl=L〃无实根〃;

m_x2=L"无实根";

)

UpdateData(FALSE);〃将变量内容显示到控件

控件ID号变量类型变量名

AIDC_EDIT1intm_a

BIDC_EDIT2intm_b

CIDC_EDIT3intm_c

XlIDC_EDIT4CSlringm_xl

X2IDC_EDIT5Cstringm_x2

}

4、卜.面是•个基于对话框的简易计算器应用程序。各控件对应的成员变量见下表:

当用户在输入框2输入数字的时候,能根据加减乘除的单选按钮的选择可以随时计算结果。请编写

IDC_EDIT2控件对EN.CHANGE消息的消息处理程序。

voidCRootDlgDlg::OnEnchangeNum2()

{I

答:

voidCRootDlgDl

温馨提示

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

评论

0/150

提交评论