《VC程序设计复习题及答案.pdf》由会员分享,可在线阅读,更多相关《VC程序设计复习题及答案.pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VC程序设计试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则 执 行 MyClass a3,*p2 语句 时,自动调用该类构造函数的次数为(B )A、2 B、3 C、4 D、52、对于类中定义的成员,其隐含访问权限为(B )A、protected B、private C、public D、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的(B)A、私有成员 B、所 有 成 员C、公 用 成 员D、保护成员4、下面说法正确的是(A)A、构造函数可以重载,析构函数不能重载。B、构造函数不能重载,析构函数可以重载。C、构造函数可以重载,析构函数也可以重
2、载。D、构造函数和析构函数都不可以重载。5、下列语句的运行结果为(D)#include srtuct COMPLEX(int x;int y;cNum2=l,3,2,7);void main()(cout cNum0.y*cNuml xendl;A、3 B、2 C、21 D、66、类AB的造缺省构函数和析构函数是(A)A、AB()n-AB()B、AB(int)nAB()C、AB()n-AB(delete)D、AB()和 intAB()7、在 C+中,若对函数未加说明,则函数的隐含类型是(A)A、int Bs double C、void D、char8、已知类A 是类B的友元,类 B是类C 的友
3、元,则(D)A、类 A 一定是类C 的友元B、类 C一定是类A 的友元C、类 C 的成员函数可以访问类B的对象的任何成员D、类 A 的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是(B)A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是(B)A、静态成员函数 B、友元函数C、构造函数 D、析构函数11、对于消息队列的描述正确的是(D)A、在 Windows中只有一个消息系统,即系统消息
4、队列。消息队列是一个系统定义的数据结构,用于临时存储消息。B、系统可从消息队列将信息直接发给窗口。另外,每个正在Windows下运行的应用程序都有自己的消息队列。C、系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。应用程序的消息对列中存储了程序的所有窗口的全部消息。D、以上都正确12、一个视图对象能连接(A)文档对象,一个文档对象能连接()视图对象。A、一,多个 B、多个,一C、一 个,一?D、多个,多个13、M FC类库中的类按层次关系可知,CStatic的直接父类为(B)A、CObject B、CWnd C、CcmdTarget D、CFrameWnd14、可以
5、利用控件的(C)属性和Tab键顺序来为控件分组。A、ID B、Tab stop C、Group D、Caption15、根据对话框的行为性质,对话框可以分为两类:(B)A、对话框资源和对话框类 B、模式对话框和非模式对话框C、对话框资源和对话框模板 D、消息对话框和模式对话框16、以下控件中,(C)没有Caption属性。A、按钮 B、群组框 C、编辑控件 D、静态控件17、菜单项助记符前用(B)引导。A、B、&C、#D、$18、更新菜单状态的消息是(C XA、WM_COMMAND B、UPDATEC、ON_UPDATE_COMMAND_UI Dx INVALIDATE19、关于工具栏、菜单和
6、加速键的关系,正确的说法是(C XA、工具按钮与菜单必须一一对应 B、工具按钮与加速键对应C、工具按钮不必与菜单一一对应 D、菜单与加速键对应20、使用GetWindowDC()和GetDC()获取的设备上下文在退出时,必须调用(A)释放设备上下文。A、ReleaseDC()B、delete()C、DeleteDC()D、Detach()二、填空题(每空1分,共25分)L VC+开发环境中,in t型数据占4 个字节,short in t占2 _个字节,long in t占_4_个字节。2、若for循 环 的 头 为for(int i=l;i10;i+J,并且在循环体中不会修改i的值,则循环体
7、将被重复执行_ _ _ _ _9一 次 后 结束。3、两个函数的函数名相同_ _ _ _但参数的个数或对应参数的类型_ _ _ _ _不同时,则称为重载函数。4、若ch为char型变量,n为int型变量,则下列语句ch=1 a;n=3;ch=ch+n;cout ch=ch;执行的结果是_ _ _ _ _ch=d o5、C+中函数的参数传递一种是按值传递,另一种是地址传递或引用传递。6、C+运行时的多态性通过_ _ _ _ _虚函数 来实现,而编译时的多态性通过函数重载_ _ _ _ _ _ _ _ 来实现。7只读成员函数用 const 关键字标识,内联成员函数用,inline 关键字标识。8、
8、class testpublic:static int x;);test tl,t2;tl.x=25;程序运行到这里时,t2.x的值为 25。9、所有的文档类都派生于cDocument _ ,所有的视图 类 都 派 生 于:cView。一10、为解决多继承中因公共基类而产生的二义性问题,C+语言提供了虚基类 机制。将公共基类声明为它以后,它在派生类中只产生一个实例。11、在代码中,使 用up Date Data_函数可实现控件与其成员变量之间的数据的传输。12、列 J 表框ClistBox类的成员函数_Addstring_用来向列表框增加列表项,成员函数 Resetcontent_ 用来清除列
9、表项所有项目。13、:串行化 是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。14、Windows程序中的消息有窗口消息、命令消息和_ _ _ 控件通知_ _ _ _ _ 消息三种类型。15、MFC中的集合类包括 数组、列表、映射.16、在进行绘图时,画刷 用于指定图形的填充样式,_ _ _ _ _ _ _ 画笔 用于指定图形的边框样式。三选择填空题(每空1分,共15分)1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行 A 的构造函数,接着执行 C 的构造函数,然后执行 43)_B_的构造函数,最后才 丽 W-D的构造函数。一A、基类
10、的对象成员 B、派生类的对象成员C、基类 D、派生类2、5 B 代表窗口客户区的显示设备上下文,6 C 代表整个窗口的显示设备上下文。A、CPaintDC B、CCIientDC C、CWindowDC D、CMetaFileDC3、消息循环的处理过程如下:A 函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后,B把来自键盘的命令翻译成WM_XXX消息命令形式。(9)E 函数通知Windows把每个消息分发给相应的窗口函数。应用程序并不直接调用窗口函数,而由Windows根
11、据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。A、GetMessage()B、translateMessage()C、PostMessage()D、SendMessage()E、DispatchMessage()4、常用的CButton类的成员函数中:A(1 0)获得一个按钮控件的选中、选择和 聚焦状态;D(1 1)得到一个按钮的选中状态;圾设置一个按钮的选中求就A、GetState()B、SetState()C、SetCheck()D、GetCheck()E、GetButtonStyle()5、滚动条类CScrollBar的成员函数规定了滚动条的操作。设置滚动条的范围使用(1 3)
12、C 函数,设置滚动块的位置使用(1 4)E 函数,获取滚动块的当前位置使用(1 5)F函数。A、SetPos B、SetRange C、SetScrollRange D、GetPosE、SetScrollPos F、GetScrollPos G、GetScrollRange四舄出下列程序的运行结果(每小摩5分,共工5分)1、.#includeclass Aint*a;public:A(int x)a=new int(x);cout*a=*aendl;delete a;);void main()A x,*p;p=new A(5);delete p;)2、class testprivate:int
13、 num;public:test();int GetNum()return num;test();;test:test()num=0;test:test()cout Destructor is activeendl;void main()test x3;coutExiting main,endl;)3、#includeclass A public:virtual void fun()cout Im class A endl;);class B:public Apublic:void fun()coutrm class Bendl;);class C:public Bpublic:void fu
14、n()coutrm class Cfun();B b;pA=&b;pA-fun();C c;a=c;a.fun();A&aRef=c;aRef.fun();)五、完成程序题(本大题共3小题,每空2分,共12分工根据题目要求,完成程序填空。1、在下面程序的横线处填上适当字句,使该程序执行结果为6O#include class baseint X;public:1_/为X置值/儆X值);void main()(base test;test.init(6);cout test.GetNum();)2、一个类的头文件如下所示,主程序中产生对象T,ST.num=10,并使用Print。函数输出这个对象的
15、值。class testprivate:int num;public:test(int);void Print(););test:test(int n)num=n;void test:Print()coutnumendl;#includevoid main()_I3 _;_ J4L_;一3、在下面横线处填上适当字句,完成类中成员函数的定义。class Aint*a;public:A(int x=0)a=5用x初始化a所指向的动态对象 A()-16;W放动态存储空间;一六、程序设计翅(1题4分,2题9分,共13分)2、为学员信息设计一个类CStudent,包 含:学号、姓名、出生日期、家庭住址、
16、班 级,并使该类可以实现串行化。请写出可以实现要求的CStudent.h和CStudent.cpp文件的内容-单 项 邮 题(每小题1分,共20分)vc程序设计试题1答案及评分标准题号12345678910答案BBBADAADBB题号111281920答案DABCBCBCCA二.填空题(噂1分,共25分)1、2、4 2.9 3、相同,不同 4、ch=d5、引用6、虚 函 数,函数重载 7、const.inline 8、259、Cdocument,CView 10、虚基类 11、UpdateData12.AddString.ResetContent 13、串行化1 4.控件通知15、数组、列 表
17、(链 表 映 射(顺序可变)16、画刷、画笔三选择填空题(每空1分,共15分)题号(i)(3)(4)(6)(8)(i o)(n)(12)(13)(14)(15)答案ACBDBcABEADc cEF四写出下列程序的运行结果(每小摩5分,共15分)1、*a=3*a=52、Exiting mainDestructor is activeDestructor is activeDestructor is active3、Im class AIm class BIm class AIm class C五、完成程序题(本大题共3小题,每空2分,共12分、1.1 void init(int i)X=i;2
18、int GetNum()returnX;2、3 test T(10);4 T.print();3、5 new int(x);6 delete a;六、程序设计题(1题4分,2题9分,共13分)2、/CStudent.hclass CStudent:public CObject 1 分public:CString Num;CString Name;CTime Birth;CString Address;CString Grade;2 分DECLARE_SERIAL(CStudent)/使对象可串行化1分virtual void Serialize(CArchive&ar);/厘载串行化函数1分)
19、;CStudent.cppIMPLEMENT_SERIAL(CStudent,CObject,0)1分void CStudent:Serialize(CArchive&ar)CObject:Serialize(ar);1 分if(ar.IsStoringO)arNumName Birth AddressNumName Birth AddressGrade;1分)VC程序设计试卷2-单 项 哪 题(每小题1分,共20分)1、假定AB为一个类,则 执 行 AB a(4),b(3),语句时,自动调用该类构造函数的次数为(B)A、2 B、3 C、4 D、52、对于结构中定义的成员,其隐含访问权限为(C
20、)A、protected B、private C、public D、static3、在面向对象编程中,对象的抽象集合称为(C XA、对象 B、集合 C、类 D、实例4、下面说法正确的是(A)A、构造函数可以重载,析构函数不能重载。B、构造函数不能重载,析构函数可以重载。C、构造函数可以重载,析构函数也可以重载。D、构造函数和析构函数都不可以重载。5、实现运行时的多态性,必须通过(A)来完成。A、虚函数 B、重载函数 C、构造函数 D、析构函数6、类CNum的缺省构造函数和析构函数是(A)A、CNum()nCNum()Bs CNum(int)nCNum()C、CNum()nCNum(delete
21、)D、CNum()和 intCNum07、在类外定义类的成员函数时,应当使用(B )来标识该函数为特定类的成员。A、:B、:C、-D、this8、已知类A是类B的友元,类B是类C的友元,则(D)A、类A 一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下面(A)是函数重载。A、void play(int)和 void play(float)B、play()和 play()C、void play(int)和 int play(int)D、void play()和 int play()10、下列说法中正确的是(
22、B )A.类定义中只能说明函数成员的函数头,不能定义函数体。B.类中的函数成员可以在类体中定义,也可以在类体之外定义。C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中。D.在类体之外定义的函数成员不能操作该类的私有数据成员。11、Windows操作系统主要基本内核元件中_ _ _ _ _ _ 支持与操作系统密切相关的功能:如进程加载、文本切换、文件I/O以及内存管理、线程管理等。(B)A、GDI B、KERNEL C、USER D、以上都不是。12、一个视图对象能连接(A)文档对象,一个文档对象能连接()视图对象。A、一 个,多个 B、多个,一C、一,一D、多个,多个13、所有的控
23、件都是(B)类的派生类,都可以作为一个特殊的窗口来处理。A、CView B、CWnd C、CWindow D、CDialog14、设置编辑控件的文本内容,可使用函数(A)A、SetWindowText()B、SetSel()C、ReplaceSel()D、GetWindowText()15、根据对话框的行为性质,对话框可以分为两类:(B)A、对话框资源和对话框类 B、模式对话框和非模式对话框C、对话框资源和对话框模板 D、消息对话框和模式对话框16、以下控件中,(C)没有Caption属性。A、按钮 B、群组框 C、编辑控件 D、静态控件17、菜单项助记符前用(B)引导。A、B、&C、#D、$
24、18、MFC中 的 集 合 类 包 括(C XA、对象、列表和映射 B、数组、列表和对象C、数组、列表和映射 D、数组、列表和链表19、文档负责将数据存储到永久存储介质中,通常是磁盘文件或数据 库,存取过程称为(B A、文件访问 B、20、下列对模板的声明A、template串行化 C、文件读写 D、格式化,正确的是(D)oB、templateC、template D、template二、填空题(每 空1分,共25分)1、VC+开发环境中,char型数据占 1个字节,int型数据占_ 4一 个 字 节,double型 数 据 占 二 个 字 节。2、若for循 环 的 头 为Hfor(inti
25、=l;i 10;i+y,并且在循环体中不会修改i的值,则循环体将被重复执行9_次后结束。3、两个函数的函数名相同,但参数的个数或对应参数的类型不同时,则称为 函数重载。4、若ch为char型变量,n为int型变量,则下列语句n=65;ch=n+3;cout ch=ch;执行的结果是_ch=D o5、组合框与列表框用途类似,它是由列表框_ _ _ _和编辑框_ _ _功能组合而成。6、DC 是Windows应用程序与设备驱动程序和输出设备之间的接口。7、如果一个类中含有纯虚函数,则称该类为_ _ _ _抽象基类8、如果类的所有对象共享一个成员,则称该成员为 静态成员9、如果类中的成员只能被本类的
26、成员函数和友元函数访问,则这些成员的访问权限为_ pr v i a t e;如果类中的成员能够被类外的函数访问,则 这 些 成 员 的 访 问 权 反 为:public。10、为解决多继承中因公共基类而产生的二义性问题,C+语言提供了 虚基类机制。将公共基类声明为它以后,它在派生类中只产生一个实例。11、Windows程序中的消息有_ _ _ 窗口消息_ _ _ _ _ _ _、命令消息_ _ _ _ _ _ _ 和一控件通知 三种类型。11、用户按下键盘按键并放开的过程中,将产生至少三条消息:_ W M _ K E Y D O W N 、_ WM _ C H A R 和W M _ K E Y
27、 U P。13、单选按钮初始化要使用函数如下:void CheckRadioButton(IDC_RADIOl,IDC_RADIOn,IDC_RADIOm)其功能的具体描述为:14、列表框分为 单选列表框 和多选列表框 两种,单选列表框 中任一时刻只能选择一项,多选列表框 则可以选取多项。三选择*9(每空工分,共 15 分)1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行 A 的构造函数,接着执行 C 的构造函数,然后执行 3)_B_的构造函数,最后才 丽 一 万 5 的构造函数。一A、基类的对象成员 B、派生类的对象成员C、基类 D、派生类2、所有
28、的文档类都派生于5C,所有的视图类都派生于6A_oA、CView B、CWindow C、CDocument D、CFormView3、7 C包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由程序来处理消息;8 D用来与Windows的控制对象,如列表框、按钮、复选框等进行双向通信。当用户在列表框中改动当前选择或改变了复选框的状态时发出此类消息。A、系统消息 B、用户消息 C、输入消息 D、控制消息4、使用 9 B 获取的设备上下文在退出时,必须调用ReleaseDC()释放设备上下文。A、GetWindowRect()B、GetDC(
29、)C、BeginPaint()D、GetClientRect()5、常用的CButton类的成员函数中:(io)A获得一个按钮控件的选中、选择和聚焦状态;(1 1)D得到一个按钮的选中状态;(1 2)C 设置一个按钮的选中扃A、GetState()B、SetState()C、SetCheck()D、GetCheck()E、GetButtonStyle()6、滚动条类CScrollBar的成员函数规定了滚动条的操作。设置滚动条的范围使用(1 3)C 函数,设置滚动块的位置使用(1 4)E函数,获取滚动块的当前位置使用(1 5)F 函数。A、SetPos B、SetRange C、SetScrol
30、lRange D、GetPosE、SetScrollPos F、GetScrollPos G、GetScrollRange四写出下列程序的运行结果(每小题5分,共20分)1、#includeclass Bpublic:static int num;);int B:num=100;void main()B bl,b2;coutbl.num ;bl.num+=25;coutb2.num endl;2、#includeclass A public:virtual void fun()cout Im class A endl;);class B:public Apublic:void fun()cou
31、trm class Bendl;);class C:public Bpublic:void fun()coutrm class Cfun();B b;pA=&b;pA-fun();C c;a=c;a.funQ;A&aRef=c;aRef.fun();)3、class testprivate:int num;float fl;public:test();int getlnt()return num;float getFloat()return fl;test(););test 二 test()cout Initalizing default endl;num=0;fl=0.0;)test:tes
32、t()cout Desdtructor is active endl;int main()test array2;coutarrayl.getlnt()arrayl.getFloat()endl;return 0;)4.int main()int num=50;int&ref=num;ref=ref+10cout num=num endl;num=num+40;cont ref=ref endl;return 0;)五、程序设计题(每题10分,共2。分)1、下列shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。请
33、从shape类派生三角形类(triangle)、矩形类(rectangle 并给出具体的求面积函数。class shapepublic:virtual float area()=0);float total(shape*s,int n)float sum=0.0;for(int i=0;in:i+)sum=sum+i.area();return sum;)2、创建一个记录通讯录内容的新类Caddrlist,包 含:姓名、住址、电话、出生日期,并使该类可以实现串行化。请写出可以实现要求的CAddrlist.h 和 CAddrlist.cpp 文件的内容(VC程序设计试题2答案及评分标准-单项选择
34、题图小题1分,共20分)题号12345678910答案BCCAAABDAB题号111281920答案BABABCBCBD二、填空题(谩1分,共25分)1、1、4、8 2、9 3、函数重载 4.ch=D5、列表框、编辑框 6、DC(设备上下文)7、抽象基类&静态成员 9.私有、公有(或者private、public)10、虚基类1 1.窗口消息、命令消息、控件通知消息(顺序可变)12、WM_KEYDOWN,WM_CHAR,WM_KEYUP13、从 IDC_RADIO1 至IIDC_RADIOn,中设置 IDC_RADIOm 为默认14、单选列表框、多选列表框、单选列表框、多选列表框三选择填空题(
35、B1分,共15分)题号(i)(3)(io)(n)(12)(13)(14)答案ACBD CACDBADc cEF四写出下列程序的运行结果(年小题5分,共20分)1、100 1252、Im class AIm class BIm class AIm class C3、Initalizing default00Desdtructor is activeDesdtructor is active4、num=60Initalizing default ref=100五、程序设计题(每 题10分,共20分)1、#include 1 分class triangle:public shape 1 分publi
36、c:virtual float area()(float s=(a+b+c)/2;return sqrt(s*(s-a)*(s-b)*(s-c);3 分)private:float a,b,c;1 分);class rectangle:public shape 1 分public:virtual float area()(return a*b;2 分)private:float a,b;1 分;2、/Addrlist.h 文件内容:class CAddrlist:public CObject(1 分public:CString Name;CString Address;CString Tel;
37、CTime Birth;CAddrlist();3 分DECLARE_SERIAL(CAddrlist)/使对象可串行化 1 分virtual void Serialize(CArchive&ar);重载串行化函数1分);Addrlist.cpp 文件内容:IMPLEMENT_SERIAL(CAddrlist,CObject,0)1分void CAddrlist:Serialize(CArchive&ar)CObject:Serialize(ar);1 分if(ar.IsStoringO)arNameTelAddressNameTelAddress Birth;1 分)VC程序设计试卷3-单项
38、选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行 MyClass a3,*p2 语句 时,自动调用该类构造函数的次数为(B)A、2 B、3 C、4 D、52、对于类中定义的成员,其隐含访问权限为(B)A、protected B、private C、public D、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的(B)A、私有成员 B、所 有 成 员 C、公 用 成 员 D、保护成员4、下面说法正确的是(A)A、构造函数可以重载,析构函数不能重载。B、构造函数不能重载,析构函数可以重载。C、构造函数可以重载,析构函数也可以重载。D、构造函数和析构函数都不
39、可以重载。5、下列语句的运行结果为(A)#include srtuct COMPLEX(int x;int y;cNum2=l,3,2,7);void main()(cout cNumO.y*cNuml x0?1:10;double area()const return 6*length*length;double volume()const return length*length*length;private:double length;);class Cylinder:public Basepublic:Cylinder(double r=10,double h=5)radius=r0?
40、r:10;height=h0?h:5;)double area()const return 2*Prradius*radius+2*Prradius*height;double volume()const return Prradius*radius*height;private:double radius;double height;);5、/CStudent.hclass CStudent:public CObject 1 分public:CString Num;CString Name;CTime Birth;CString Address;CString Grade;2 分DECLAR
41、E_SERIAL(CStudent)/使对象可串行化 1分virtual void Serialize(CArchive&a r);/厘载串行化函数1 分);CStudent.cppIMPLEMENT_SERIAL(CStudent,CObject,0)1 分void CStudent:Serialize(CArchive&ar)CObject:Serialize(ar);if(ar.IsStoringO)1 分1 分 ar Num Name Birth Address NumName Birth AddressGrade;1分6、(5分)打开控制面板,双击ODBC图标,进入ODBC数据源管理器。定义用户DSN的步骤如下:(1)单 击【添加】按 钮,弹出 创建新数据源 对话框。(2)为新的数据源选择数据库驱动程序。并单击【完成】按钮。(3)在ODBC Microsoft Access 97安装”对话框中,应为该数据源起一个简短的名称。并在下一个编辑框中输入对该数据库的说明。(4)指定数据库的位置。单 击【选取】按钮,然后指定所创建的Access数据库。(5)单击【确定】按 钮,刚才创建的用户数据源被添加在ODBC数据源管理器 的 用户数据源 列表中。
限制150内