vc复习提.docx
《vc复习提.docx》由会员分享,可在线阅读,更多相关《vc复习提.docx(9页珍藏版)》请在冰豆网上搜索。
vc复习提
一、单项选择题(每小题1分,共20分)
1、假定MyClass为一个类,则执行“”MyClassa[3],*p[2];”语句时,自动调用该类构造函数的次数为()
A、2B、3C、4D、5
2、对于类中定义的成员,其隐含访问权限为()
A、protectedB、privateC、publicD、static
3、一个类的友元函数或友元类能够通过成员操作符访问该类的()
A、私有成员B、所有成员C、公用成员D、保护成员
4、下面说法正确的是()
A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
6、类AB的缺省构造函数和析构函数是()
A、AB()和~AB()B、AB(int)和~AB()
C、AB()和~AB(delete)D、AB()和int~AB()
7、在C++中,若对函数未加说明,则函数的隐含类型是()
A、intB、doubleC、voidD、char
9、下列说法中正确的是()
A、类定义中只能说明函数成员的函数头,不能定义函数体
B、类中的函数成员可以在类体中定义,也可以在类体之外定义
C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D、在类体之外定义的函数成员不能操作该类的私有数据成员
10、以下不属于成员函数的是()
A、静态成员函数B、友元函数
C、构造函数D、析构函数
11、对于消息队列的描述正确的是()
A、在Windows中只有一个消息系统,即系统消息队列。
消息队列是一个系统定义的数据结构,用于临时存储消息。
B、系统可从消息队列将信息直接发给窗口。
另外,每个正在Windows下运行的应用程序都有自己的消息队列。
C、系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。
应用程序的消息对列中存储了程序的所有窗口的全部消息。
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分)
3、两个函数的函数名________,但参数的个数或对应参数的类型_________时,则称为重载函数。
4、若ch为char型变量,n为int型变量,则下列语句
ch=’a’;n=3;ch=ch+n;
cout<<”ch=”<执行的结果是__________。
5、C++中函数的参数传递一种是按值传递,另一种是地址传递或________传递。
6、C++运行时的多态性通过______________来实现,而编译时的多态性通过_____________来实现。
8、classtest{
public:
staticintx;
};
testt1,t2;t1.x=25;
程序运行到这里时,t2.x的值为____________。
10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了________机制。
将公共基类声明为它以后,它在派生类中只产生一个实例。
11、在代码中,使用CWnd:
:
____________函数可实现控件与其成员变量之间的数据的传输。
14、Windows程序中的消息有窗口消息、命令消息和__________消息三种类型。
三选择填空题(每空1分,共15分)
1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行⑴的构造函数,接着执行⑵
的构造函数,然后执行___⑶___的构造函数,最后才执行⑷的构造函数。
A、基类的对象成员B、派生类的对象成员
C、基类D、派生类
3、消息循环的处理过程如下:
⑺
函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后,
⑻把来自键盘的命令翻译成WM_XXX消息命令形式。
⑼
函数通知Windows把每个消息分发给相应的窗口函数。
应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。
A、GetMessage()B、translateMessage()C、PostMessage()
D、SendMessage()E、DispatchMessage()
4、常用的CButton类的成员函数中:
⑽获得一个按钮控件的选中、选择和聚焦状态;⑾得到一个按钮的选中状态;⑿
设置一个按钮的选中状态。
A、GetState()B、SetState()C、SetCheck()
D、GetCheck()E、GetButtonStyle()
5、滚动条类CScrollBar的成员函数规定了滚动条的操作。
设置滚动条的范围使用⒀函数,设置滚动块的位置使用⒁
函数,获取滚动块的当前位置使用⒂函数。
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;
}
2、classtest{
private:
intnum;
public:
test();
intGetNum(){returnnum;}
~test();
};
test:
:
test(){num=0;}
test:
:
~test()
{cout<<″Destructorisactive″<voidmain()
{testx[3];
cout<<″Exitingmain″<}
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.fun();
A&aRef=c;
aRef.fun();
}
五、完成程序题(本大题共3小题,每空2分,共12分)。
根据题目要求,完成程序填空。
1、在下面程序的横线处填上适当字句,使该程序执行结果为6。
#include
classbase{
intX;
public:
_________[1]__________//为X置值
_________[2]__________//取X值
};
voidmain()
{
basetest;
test.init(6);
cout<}
2、一个类的头文件如下所示,主程序中产生对象T,且T.num=10,并使用Print()函数输出这个对象的值。
classtest{
private:
intnum;
public:
test(int);
voidPrint();
};
test:
:
test(intn){num=n;}
voidtest:
:
Print(){cout<#include
voidmain()
{______[3]______________;
______[4]______________;
}
3、在下面横线处填上适当字句,完成类中成员函数的定义。
classA{
int*a;
public:
A(intx=0){
a=_____[5]____________;//用x初始化a所指向的动态对象
}
~A(){_____[6]___________;}//释放动态存储空间
};
六、程序设计题(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显示出来。
写出加法按钮对应的代码。
voidCExDlg:
:
OnButton1()
{
}
2、为学员信息设计一个类CStudent,包含:
学号、姓名、出生日期、家庭住址、班级。
请写出可以实现要求的CStudent.h和CStudent.cpp文件的内容
3、课件里鼠标键盘的例子
4、文档中画两条平行线的程序。