}
A、3B、2C、21D、6
6、类AB的缺省构造函数和析构函数是()
A、AB()和~AB()B、AB(int)和~AB()
C、AB()和~AB(delete)D、AB()和int~AB()
7、在C++中,若对函数未加说明,则函数的隐含类型是()
A、intB、doubleC、voidD、char
8、已知类A是类B的友元,类B是类C的友元,则()
A、类A一定是类C的友元
B、类C一定是类A的友元
C、类C的成员函数可以访问类B的对象的任何成员
D、类A的成员函数可以访问类B的对象的任何成员
9、下列说法中正确的是()
A、类定义中只能说明函数成员的函数头,不能定义函数体
B、类中的函数成员可以在类体中定义,也可以在类体之外定义
C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D、在类体之外定义的函数成员不能操作该类的私有数据成员
10、以下不属于成员函数的是()
A、静态成员函数B、友元函数
C、构造函数D、析构函数
11、对于消息队列的描述正确的是()
A、在Windows中只有一个消息系统,即系统消息队列。
消息队列是一个系统定义的数据结构,用于临时存储消息。
B、系统可从消息队列将信息直接发给窗口。
另外,每个正在Windows下运行的应用程序都有自己的消息队列。
C、系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。
应用程序的消息对列中存储了程序的所有窗口的全部消息。
D、以上都正确
12、一个视图对象能连接()文档对象,一个文档对象能连接()视图对象。
A、一个,多个B、多个,一个
C、一个,一个D、多个,多个
13、MFC类库中的类按层次关系可知,CStatic的直接父类为()
A、CObjectB、CWndC、CcmdTargetD、CFrameWnd
14、可以利用控件的()属性和Tab键顺序来为控件分组。
A、IDB、TabstopC、GroupD、Caption
15、根据对话框的行为性质,对话框可以分为两类:
()
A、对话框资源和对话框类B、模式对话框和非模式对话框
C、对话框资源和对话框模板D、消息对话框和模式对话框
16、以下控件中,()没有Caption属性。
A、按钮B、群组框C、编辑控件D、静态控件
17、菜单项助记符前用()引导。
A、%B、&C、#D、$
18、更新菜单状态的消息是()。
A、WM_COMMANDB、UPDATE
C、ON_UPDATE_COMMAND_UID、INVALIDATE
19、关于工具栏、菜单和加速键的关系,正确的说法是()。
A、工具按钮与菜单必须一一对应B、工具按钮与加速键一一对应
C、工具按钮不必与菜单一一对应D、菜单与加速键一一对应
20、使用GetWindowDC()和GetDC()获取的设备上下文在退出时,必须调用()释放设备上下文。
A、ReleaseDC()B、delete()C、DeleteDC()D、Detach()
二、填空题(每空1分,共25分)
1、VC++开发环境中,int型数据占4个字节,shortint占____2___个字节,longint占____4_____个字节。
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;=25;
程序运行到这里时,的值为____25________。
9、所有的文档类都派生于___Cdocument____________,所有的视图类都派生于:
_____Cview________。
10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了__虚基类______机制。
将公共基类声明为它以后,它在派生类中只产生一个实例。
11、在代码中,使用CWnd:
:
_____UpdateData_______函数可实现控件与其成员变量之间的数据的传输。
12、列表框ClistBox类的成员函数___AddString___________用来向列表框增加列表项,成员函数_____ResetContent_______用来清除列表项所有项目。
13、:
______串行化___________是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。
14、Windows程序中的消息有窗口消息、命令消息和控件通知消息三种类型。
15、MFC中的集合类包括数组、列表、映射。
16、在进行绘图时,画刷用于指定图形的填充样式,_____画笔_______用于指定图形的边框样式。
三选择填空题(每空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
四写出下列程序的运行结果(每小题5分,共15分)
1、.#include<>
classA{
int*a;
public:
A(intx){a=newint(x);cout<<"*a="<<*a<};
voidmain()
{
Ax(3),*p;
p=newA(5);
deletep;
}
*a=3
*a=5
2、classtest{
private:
intnum;
public:
test();
intGetNum(){returnnum;}
~test();
};
test:
:
test(){num=0;}
test:
:
~test()
{cout<<″Destructorisactive″<voidmain()
{testx[3];
cout<<″Exitingmain″<}
Exitingmain
Destructorisactive
Destructorisactive
Destructorisactive
3、#include<>
classA{
public:
virtualvoidfun()
{cout<<"I'mclassA"<};
classB:
publicA{
public:
voidfun()
{cout<<"I'mclassB"<};
classC:
publicB{
public:
voidfun()
{cout<<"I'mclassC"<};
voidmain()
{
Aa,*pA=&a;
pA->fun();
Bb;
pA=&b;
pA->fun();
Cc;
a=c;
();
A&aRef=c;
();
}
I'mclassA
I'mclassB
I'mclassA
I'mclassC
五、完成程序题(本大题共3小题,每空2分,共12分)。
根据题目要求,完成程序填空。
1、在下面程序的横线处填上适当字句,使该程序执行结果为6。
#include<>
classbase{
intX;
public:
_________[1]voidinit(inti){X=i;}__________
3C定义中只能说明函数成员的函数头,不能定义函数体。
B.类中的函数成员可以在类体中定义,也可以在类体之外定义。
C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中。
D.在类体之外定义的函数成员不能操作该类的私有数据成员。
11、Windows操作系统主要基本内核元件中,_______支持与操作系统密切相关的功能:
如进程加载、文本切换、文件I/O以及内存管理、线程管理等。
()
A、GDIB、KERNELC、USERD、以上都不是。
12、一个视图对象能连接()文档对象,一个文档对象能连接()视图对象。
A、一个,多个B、多个,一个
C、一个,一个D、多个,多个
13、所有的控件都是()类的派生类,都可以作为一个特殊的窗口来处理。
A、CViewB、CWndC、CWindowD、CDialog
14、设置编辑控件的文本内容,可使用函数()
A、SetWindowText()B、SetSel()
C、ReplaceSel()D、GetWindowText()
15、根据对话框的行为性质,对话框可以分为两类:
()
A、对话框资源和对话框类B、模式对话框和非模式对话框
C、对话框资源和对话框模板D、消息对话框和模式对话框
16、以下控件中,()没有Caption属性。
A、按钮B、群组框C、编辑控件D、静态控件
17、菜单项助记符前用()引导。
A、%B、&C、#D、$
18、MFC中的集合类包括()。
A、对象、列表和映射B、数组、列表和对象
C、数组、列表和映射D、数组、列表和链表
19、文档负责将数据存储到永久存储介质中,通常是磁盘文件或数据库,存取过程称为()。
A、文件访问B、串行化C、文件读写D、格式化
20、下列对模板的声明,正确的是()。
A、templateB、template
C、templateD、template
二、填空题(每空1分,共25分)
1、VC++开发环境中,char型数据占1个字节,int型数据占__4_____个字节,double型数据占____8_____个字节。
2、若for循环的“头”为“for(inti=1;i<10;i++)”,并且在循环体中不会修改i的值,则循环体将被重复执行_____9_______次后结束。
3、两个函数的函数名相同,但参数的个数或对应参数的类型不同时,则称为函数重载。
4、若ch为char型变量,n为int型变量,则下列语句
n=65;ch=n+3;
cout<<”ch=”<执行的结果是__ch=D________。
5、组合框与列表框用途类似,它是由__列表框________和__编辑框________功能组合而成。
6、DC是Windows应用程序与设备驱动程序和输出设备之间的接口。
7、如果一个类中含有纯虚函数,则称该类为___抽象基类_________
8、如果类的所有对象共享一个成员,则称该成员为__静态成员___________
9、如果类中的成员只能被本类的成员函数和友元函数访问,则这些成员的访问权限为__私有_______;如果类中的成员能够被类外的函数访问,则这些成员的访问权限为:
____公有______。
10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了__虚基类______机制。
将公共基类声明为它以后,它在派生类中只产生一个实例。
11、Windows程序中的消息有、窗口消息、命令消息、控件通知消息三种类型。
11、用户按下键盘按键并放开的过程中,将产生至少三条消息:
WM_KEYDOWN,WM_CHAR,WM_KEYUP
13、单选按钮初始化要使用函数如下:
voidCheckRadioButton(IDC_RADIO1,IDC_RADIOn,IDC_RADIOm)
其功能的具体描述为:
_从IDC_RADIO1到IDC_RADIOn,中设置IDC_RADIOm为默认
14、列表框分为单选列表框和多选列表框两种,中任一时刻只能选择一项,则可以选取多项。
三选择填空题(每空1分,共15分)
1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行⑴A的构造函数,接着执行⑵C的构造函数,然后执行___⑶_B__的构造函数,最后才执行⑷D的构造函数。
A、基类的对象成员B、派生类的对象成员
C、基类D、派生类
2、所有的文档类都派生于[5]C,所有的视图类都派生于[6]A。
A、CViewB、CWindowC、CDocumentD、CFormView
3、[7]C包括键盘和鼠标的输入。
这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由程序来处理消息;D[8]用来与Windows的控制对象,如列表框、按钮、复选框等进行双向通信。
当用户在列表框中改动当前选择或改变了复选框的状态时发出此类消息。
A、系统消息B、用户消息C、输入消息D、控制消息
4、使用[9]B获取的设备上下文在退出时,必须调用ReleaseDC()释放设备上下文。
A、GetWindowRect()B、GetDC()
C、BeginPaint()D、GetClientRect()
5、常用的CButton类的成员函数中:
⑽A获得一个按钮控件的选中、选择和聚焦状态;⑾D得到一个按钮的选中状态;⑿C设置一个按钮的选中状态。
A、GetState()B、SetState()C、SetCheck()
D、GetCheck()E、GetButtonStyle()
6、滚动条类CScrollBar的成员函数规定了滚动条的操作。
设置滚动条的范围使用⒀C函数,设置滚动块的位置使用⒁E函数,获取滚动块的当前位置使用⒂F函数。
A、SetPosB、SetRangeC、SetScrollRangeD、GetPos
E、SetScrollPosF、GetScrollPosG、GetScrollRange
四写出下列程序的运行结果(每小题5分,共20分)
1、#include<>
classB{
public:
staticintnum;
};
intB:
:
num=100;
voidmain()
{Bb1,b2;
cout<<<<’’;
+=25;
cout<<<}
100125
2、#include<>
classA{
public:
virtualvoidfun()
{cout<<"I'mclassA"<};
classB:
publicA{
public:
voidfun()
{cout<<"I'mclassB"<};
classC:
publicB{
public:
voidfun()
{cout<<"I'mclassC"<};
voidmain()
{
Aa,*pA=&a;
pA->fun();
Bb;
pA=&b;
pA->fun();
Cc;
a=c;
();
A&aRef=c;
();
}
I'mclassA
I'mclassB
I'mclassA
I'mclassC
3、classtest{
private:
intnum;
floatfl;
public:
test();
intgetInt(){returnnum;}
floatgetFloat(){returnfl;}
~test();
};
test∷test()
{cout<<"Initalizingdefault"<num=0;fl=;
}
test∷~test()
{cout<<"Desdtructorisactive"<intmain()
{testarray[2];
cout<<return0;
}
Initalizingdefault
Initalizingdefault
00
Desdtructorisactive
Desdtructorisactive
4.intmain()
{intnum=50;
int&ref=num;
ref=ref+10
cout<<"num="<num=num+40;
cont<<"ref="<return0;
}
num=60
ref=100
五、程序设计题(每题10分,共20分)
1、下列shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。
请从shape类派生三角形类(triangle)、矩形类(rectangle)、并给出具体的求面积函数。
classshape{
public:
virtualfloatarea()=0
};
floattotal(shape*s[],intn)
{floatsum=;
for(inti=0;ii++)
sum=sum+();
returnsum;
}
#include<>1分
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分
};
2、创建一个记录通讯录内容的新类Caddrlist,包含:
姓名、住址、电话、出生日期,并使该类可以实现串行化。
请写出可以实现要求的和文件的内容
3C*cNum[1]x<}
A、6B、2C、21D、3
6、类AB的缺省构造函数和析构函数是()
A、AB()和~AB()B、AB(int)和~AB()
C、AB()和~AB(delete)D、AB()和int~AB()
7、在C++中,若对函数未加说明,则函数的隐含类型是()
A、intB、doubleC、voidD、char
8、已知