VC复习题+答案.docx

上传人:小飞机 文档编号:3168393 上传时间:2023-03-11 格式:DOCX 页数:44 大小:57.51KB
返回 下载 相关 举报
VC复习题+答案.docx_第1页
第1页 / 共44页
VC复习题+答案.docx_第2页
第2页 / 共44页
VC复习题+答案.docx_第3页
第3页 / 共44页
VC复习题+答案.docx_第4页
第4页 / 共44页
VC复习题+答案.docx_第5页
第5页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《VC复习题+答案.docx》由会员分享,可在线阅读,更多相关《VC复习题+答案.docx(44页珍藏版)》请在三一办公上搜索。

1、VC复习题+答案VC程序设计试卷1 一、单项选择题(每小题1分,共20分) 1、假定MyClass为一个类,则执行“” MyClass a3,*p2;”语句时,自动调用该类构造函数的次数为 A、2 B、3 C、4 D、5 2、对于类中定义的成员,其隐含访问权限为 A、protected B、private C、public D、 static 3、一个类的友元函数或友元类能够通过成员操作符访问该类的 A、私有成员 B、所有成员 C、公用成员 D、保护成员 4、下面说法正确的是 A、构造函数可以重载,析构函数不能重载。 B、构造函数不能重载,析构函数可以重载。 C、构造函数可以重载,析构函数也可

2、以重载。 D、构造函数和析构函数都不可以重载。 5、下列语句的运行结果为 #include srtuct COMPLEX int x; int y; cNum2=1,3,2,7; void main cout cNum0.y*cNum1 xendl; A、3 B、2 C、21 D、6 6、类AB的缺省构造函数和析构函数是 A、AB( )和AB( ) B、AB(int)和AB( ) C、AB( )和AB(delete ) D、AB( )和intAB( ) 7、在C+中,若对函数未加说明,则函数的隐含类型是 A、int B、double C、void D、char 8、已知类A是类B的友元,类B是

3、类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中只有一个消息系统,

4、即系统消息队列。消息队列是一个系统定义的数据结构,用于临时存储消息。 B、系统可从消息队列将信息直接发给窗口。另外,每个正在Windows下运行的应用程序都有自己的消息队列。 C、系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。应用程序的消息对列中存储了程序的所有窗口的全部消息。 D、以上都正确 12、一个视图对象能连接文档对象,一个文档对象能连接视图对象。 A、一个,多个 B、多个,一个 C、一个,一个 D、多个,多个 13、MFC类库中的类按层次关系可知,CStatic 的直接父类为( ) A、CObject B、CWnd C、CcmdTarget D、CFra

5、meWnd 14、可以利用控件的属性和Tab键顺序来为控件分组。 A、ID B、Tab stop C、Group D、Caption 15、根据对话框的行为性质,对话框可以分为两类: A、对话框资源和对话框类 B、模式对话框和非模式对话框 C、对话框资源和对话框模板 D、消息对话框和模式对话框 16、以下控件中,没有Caption属性。 A、按钮 B、群组框 C、编辑控件 D、静态控件 17、菜单项助记符前用引导。 A、% B、& C、# D、$ 18、更新菜单状态的消息是。 A、WM_COMMAND B、UPDATE C、ON_UPDATE_COMMAND_UI D、INVALIDATE 1

6、9、关于工具栏、菜单和加速键的关系,正确的说法是。 A、工具按钮与菜单必须一一对应 B、工具按钮与加速键一一对应 C、工具按钮不必与菜单一一对应 D、菜单与加速键一一对应 20、使用GetWindowDC( )和GetDC( )获取的设备上下文在退出时,必须调用释放设备上下文。 A、ReleaseDC( ) B、delete( ) C、DeleteDC( ) D、Detach( ) 二、填空题(每空1分,共25分) 1、VC+开发环境中,int型数据占4个字节,short int占_个字节,long int 占_个字节。 2、若for循环的“头”为“for”,并且在循环体中不会修改i的值,则循

7、环体将被重复执行_次后结束。 3、两个函数的函数名_,但参数的个数或对应参数的类型_时,则称为重载函数。 4、若ch为char型变量,n为int型变量,则下列语句 ch = a; n = 3; ch = ch + n; cout” ch = ” ch; 执行的结果是_。 5、C+中函数的参数传递一种是按值传递,另一种是地址传递或_传递。 6、C+运行时的多态性通过_来实现,而编译时的多态性通过_来实现。 7 只读成员函数用_关键字标识,内联成员函数用_关键字标识。 8、 class test public: static int x; ; test t1,t2; t1.x = 25; 程序运行

8、到这里时,t2.x的值为_。 9、所有的文档类都派生于_ _,所有的视图类都派生于:_ _。 10、为解决多继承中因公共基类而产生的二义性问题,C+语言提供了_机制。将公共基类声明为它以后,它在派生类中只产生一个实例。 11、在代码中,使用CWnd:_函数可实现控件与其成员变量之间的数据的传输。 12、列表框ClistBox类的成员函数_用来向列表框增加列表项,成员函数_用来清除列表项所有项目。 13、:_ 是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。 14、Windows程序中的消息有窗口消息、命令消息和_消息三种类型。 15、MFC中的集合类包括 、 、 。 16、在进

9、行绘图时, 用于指定图形的填充样式, _用于指定图形的边框样式。 三 选择填空题 1、如果在基类和派生类中都包含其他类的对象,则在创建派生类的对象时,首先执行 的构造函数,接着执行 的构造函数,然后执行_ _的构造函数,最后才执行 的构造函数。 A、基类的对象成员 B、派生类的对象成员 C、基类 D、派生类 2、 5 代表窗口客户区的显示设备上下文, 6 代表整个窗口的显示设备上下文。 A、CPaintDC B、CClientDC C、CWindowDC D、CMetaFileDC 3、消息循环的处理过程如下: 函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不

10、为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后, 把来自键盘的命令翻译成WM_XXX消息命令形式。 函数通知Windows把每个消息分发给相应的窗口函数。应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。 A、GetMessage( ) B、translateMessage( ) C、PostMessage( ) D、SendMessage( ) E、DispatchMessage( ) 4、常用的CButton类的成员函数中: 获得一个按钮控件的选中、选择和 聚焦状态; 得到一个按钮的选中状态

11、; 设置一个按钮的选中状态。 A、GetState( ) B、SetState( ) C、SetCheck( ) D、GetCheck( ) E、GetButtonStyle( ) 5、滚动条类CScrollBar的成员函数规定了滚动条的操作。设置滚动条的范围使用 函数,设置滚动块的位置使用 函数,获取滚动块的当前位置使用 函数。 A、SetPos B、SetRange C、SetScrollRange D、GetPos E、SetScrollPos F、GetScrollPos G、 GetScrollRange 四 写出下列程序的运行结果 1、 .#include class A int

12、*a; public: A(int x) a=new int(x); cout*a=*aendl; ; void main A x(3), *p; p=new A (5); delete p; 2、class test private: int num; public: test; int GetNum return num; test; ; test:test num=0; test:test coutDestructor is activeendl; void main test x3; coutExiting mainendl; 3、 #include class A public: v

13、irtual void fun coutIm class Aendl; ; delete a; class B: public A public: void fun coutIm class Bendl; ; class C: public B public: void fun coutIm class Cfun; B b; pA=&b; pA-fun; C c; a=c; a.fun; A &aRef=c; aRef.fun; 五、完成程序题。根据题目要求,完成程序填空。 1、在下面程序的横线处填上适当字句,使该程序执行结果为6。 #include class base int X; pub

14、lic: _1_/为X置值 _2_/取X值 ; void main base test; test.init(6); couttest.GetNum; 2、一个类的头文件如下所示,主程序中产生对象T,且T.num=10,并使用Print函数输出这个对象的值。 class test private: int num; public: test(int); void Print; ; test:test(int n) num=n; void test:Print coutnumendl; #include void main _3_; _4_; 3、在下面横线处填上适当字句,完成类中成员函数的定义

15、。 class A int * a; public: A(int x=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)。 假设输入的数为整数,加法按钮的功能是将两操作数相加,并将结果在对应的编

16、辑框IDC_EDIT3显示出来。写出加法按钮对应的代码。 void CExDlg:OnButton1 2、为学员信息设计一个类CStudent,包含:学号、姓名、出生日期、家庭住址、班级,并使该类可以实现串行化。请写出可以实现要求的CStudent.h和CStudent.cpp文件的内容 VC程序设计试题1答案及评分标准 一、单项选择题(每小题1分,共20分) 题号 答案 题号 答案 1 B 11 D 2 B 12 A 3 B 13 B 4 A 14 C 5 D 15 B 6 A 16 C 7 A 17 B 8 D 18 C 9 B 19 C 10 B 20 A 二、填空题(每空1分,共25分

17、) 1、 2、 4 2、 9 3、 相同,不同 4、 ch=d 5、 引用 6、 虚函数 ,函数重载 7、 const 、 inline 8、 25 9、 Cdocument、 CView 10、 虚基类 11、 UpdateData 12、 AddString、ResetContent 13、 串行化 14、 控件通知 15、数组、列表、映射 16、画刷、画笔 三 选择填空题 题号 答案 A C B D B C A B E A D C C E F 四 写出下列程序的运行结果 1、 *a = 3 *a = 5 2、 Exiting main Destructor is active Destr

18、uctor is active Destructor is active 3、 Im class A Im class B Im class A Im class C 五、完成程序题。 1、1 void init(int i ) X=i; 2 int GetNum return X; 2、3 test T ( 10 ); 4 T.print ( ); 3、5 new int; 6 delete a; 六、程序设计题(1题4 分,2题9 分,共13分) 1、 UpdateDate(TRUE); 1分 m_result = m_op1 + m_op2; 2分 UpdateDate(FALSE);

19、1分 2、 /CStudent.h class 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分 ; CStudent.cppIMPLEMENT_SERIAL(CStudent ,CObject, 0) 1分 void CStudent:Seri

20、alize(CArchive & ar) CObject:Serialize(ar); 1分 if ( ar.IsStoring ) arNumName Birth AddressNumName Birth AddressGrade; 1分 VC程序设计试卷2 一、单项选择题(每小题1分,共20分) 1、假定AB为一个类,则执行“”AB a(4),b(3),*p2;”语句时,自动调用该类构造函数的次数为 A、2 B、3 C、4 D、5 2、对于结构中定义的成员,其隐含访问权限为 A、protected B、private C、public D、 static 3、在面向对象编程中,对象的抽象集

21、合称为。 A、对象 B、集合 C、类 D、实例 4、下面说法正确的是 A、构造函数可以重载,析构函数不能重载。 B、构造函数不能重载,析构函数可以重载。 C、构造函数可以重载,析构函数也可以重载。 D、构造函数和析构函数都不可以重载。 5、实现运行时的多态性,必须通过来完成。 A、虚函数 B、重载函数 C、构造函数 D、析构函数 6、类CNum的缺省构造函数和析构函数是 A、CNum ( )和CNum ( ) B、CNum (int)和CNum( ) C、CNum ( )和CNum (delete ) D、CNum ( )和intCNum ( ) 7、在类外定义类的成员函数时,应当使用来标识该

22、函数为特定类的成员。 A、 : B、 : C、- D、this 8、已知类A是类B的友元,类B是类C的友元,则( ) A、类A一定是类C的友元 B、类C一定是类A的友元 C、类C的成员函数可以访问类B的对象的任何成员 D、类A的成员函数可以访问类B的对象的任何成员 9、下面( )是函数重载。 A、void play(int) 和void play(float) B、play( ) 和 play C、void play(int) 和int play(int) D、void play( ) 和int play( ) 10、下列说法中正确的是( ) A.类定义中只能说明函数成员的函数头,不能定义函数

23、体。 B.类中的函数成员可以在类体中定义,也可以在类体之外定义。 C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中。 D.在类体之外定义的函数成员不能操作该类的私有数据成员。 11、Windows操作系统主要基本内核元件中,_支持与操作系统密切相关的功能:如进程加载、文本切换、文件I/O以及内存管理、线程管理等。 A、GDI B、KERNEL C、USER D、以上都不是。 12、一个视图对象能连接文档对象,一个文档对象能连接视图对象。 A、一个,多个 B、多个,一个 C、一个,一个 D、多个,多个 13、所有的控件都是 ( ) 类的派生类,都可以作为一个特殊的窗口来处理。 A、C

24、View B、CWnd C、CWindow D、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、对

25、象、列表和映射 B、数组、列表和对象 C、数组、列表和映射 D、数组、列表和链表 19、文档负责将数据存储到永久存储介质中,通常是磁盘文件或数据库,存取过程称为。 A、文件访问 B、串行化 C、文件读写 D、格式化 20、下列对模板的声明,正确的是。 A、template B、template C、template D、template 二、填空题(每空1分,共25分) 1、VC+开发环境中,char型数据占 个字节,int型数据占_个字节,double型数据占_个字节。 2、若for循环的“头”为“for”,并且在循环体中不会修改i的值,则循环体将被重复执行_次后结束。 3、两个函数的函数名

26、相同,但参数的个数或对应参数的类型不同时,则称为 。 4、若ch为char型变量,n为int型变量,则下列语句 n = 65; ch = n+3; cout” ch = ” ch; 执行的结果是_。 5、组合框与列表框用途类似,它是由_和_功能组合而成。 6、 是Windows应用程序与设备驱动程序和输出设备之间的接口。 7、如果一个类中含有纯虚函数,则称该类为_ 8、如果类的所有对象共享一个成员,则称该成员为_ 9、如果类中的成员只能被本类的成员函数和友元函数访问,则这些成员的访问权限为_ _;如果类中的成员能够被类外的函数访问,则这些成员的访问权限为:_ _。 10、为解决多继承中因公共基

27、类而产生的二义性问题,C+语言提供了_机制。将公共基类声明为它以后,它在派生类中只产生一个实例。 11、Windows程序中的消息有_、_和_三种类型。 11、用户按下键盘按键并放开的过程中,将产生至少三条消息:_、_和_。 13、单选按钮初始化要使用函数如下: void CheckRadioButton(IDC_RADIO1, IDC_RADIOn , IDC_RADIOm) 其功能的具体描述为:_ 14、列表框分为 和 两种, 中任一时刻只能选择一项, 则可以选取多项。 三 选择填空题 1、如果在基类和派生类中都包含其他类的对象,则在创建派生类的对象时,首先执行 的构造函数,接着执行 的构

28、造函数,然后执行_ _的构造函数,最后才执行 的构造函数。 A、基类的对象成员 B、派生类的对象成员 C、基类 D、派生类 2、所有的文档类都派生于 5 ,所有的视图类都派生于 6 。 A、CView B、CWindow C、CDocument D、CFormView 3、 7 包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由程序来处理消息; 8 用来与Windows的控制对象,如列表框、按钮、复选框等进行双向通信。当用户在列表框中改动当前选择或改变了复选框的状态时发出此类消息。 A、系统消息 B、用户消息 C、输入消息 D、控制消息

29、 4、使用 9 获取的设备上下文在退出时,必须调用ReleaseDC( )释放设备上下文。 A、GetWindowRect( ) B、GetDC( ) C、BeginPaint D、GetClientRect( ) 5、常用的CButton类的成员函数中: 获得一个按钮控件的选中、选择和 聚焦状态; 得到一个按钮的选中状态; 设置一个按钮的选中状态。 A、GetState( ) B、SetState( ) C、SetCheck( ) D、GetCheck( ) E、GetButtonStyle( ) 6、滚动条类CScrollBar的成员函数规定了滚动条的操作。设置滚动条的范围使用 函数,设置

30、滚动块的位置使用 函数,获取滚动块的当前位置使用 函数。 A、SetPos B、SetRange C、SetScrollRange D、GetPos E、SetScrollPos F、GetScrollPos G、 GetScrollRange 四 写出下列程序的运行结果 1、 #include class B public: static int num; ; int B: num=100; void main B b1, b2; coutb1.num ; b1.num+=25; coutb2.num endl; 2、 #include class A public: virtual voi

31、d fun coutIm class Aendl; ; class B: public A public: void fun coutIm class Bendl; ; class C: public B public: void fun coutIm class Cfun; B b; pA=&b; pA-fun; C c; a=c; a.fun; A &aRef=c; aRef.fun; 3、 class test private: int num; float fl; public: test( ); int getInt( ) return num; float getFloat( )

32、return fl; test( ); ; test test( ) cout Initalizing default endl; num=0; fl=0.0; test test( ) cout Desdtructor is active endl; int main( ) test array2; coutarray1.getInt array1.getFloatendl; return 0; 4. int main( ) int num=50; int & ref=num; ref=ref+10 cout num= num endl; num=num+40; cont ref= ref

33、endl; return 0; 五、程序设计题(每题10 分,共20分) 1、下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类、并给出具体的求面积函数。 class shape public: 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、创建一个记

34、录通讯录内容的新类Caddrlist,包含:姓名、住址、电话、出生日期,并使该类可以实现串行化。请写出可以实现要求的CAddrlist.h和CAddrlist.cpp文件的内容 VC程序设计试题2答案及评分标准 一、单项选择题(每小题1分,共20分) 题号 答案 题号 答案 1 B 11 B 2 C 12 A 3 C 13 B 4 A 14 A 5 A 15 B 6 A 16 C 7 B 17 B 8 D 18 C 9 A 19 B 10 B 20 D 二、填空题(每空1分,共25分) 1、 1、 4 、8 2、 9 3、 函数重载 4、 ch=D 5、列表框、编辑框 6、DC 7、抽象基类

35、8、 静态成员 9、 私有、公有 10、虚基类 11、窗口消息、命令消息、控件通知消息 12、WM_KEYDOWN,WM_CHAR,WM_KEYUP 13、从IDC_RADIO1到IDC_RADIOn,中设置IDC_RADIOm为默认 14、单选列表框、多选列表框、单选列表框、多选列表框 三 选择填空题 题号 答案 A C B D C A C D B A D C C E F 四 写出下列程序的运行结果 1、 100 125 2、 Im class A Im class B Im class A Im class C 3、 Initalizing default Initalizing defa

36、ult 0 0 Desdtructor is active Desdtructor is active 4、num=60 ref=100 五、程序设计题(每题10 分,共20分) 1、 #include 1分 class triangle:public shape 1分 public: 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 floa

37、t 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; CTime Birth; CAddrlist; 3分 DECLARE_SERIAL(CAddrlist) / 使对象可串行化 1分 virtual void Serialize( CArchive & ar ); /重载串行化函数 1分; Addrlist.cpp文件内容:IMPLEMENT_SERIAL(CAddrlist,CObject, 0) void CAddrlist:Serialize(CArchive & ar) CObject:Serialize(ar); 1分 if ( ar.IsStoring ) arNameTelAddressNameTelAddressBirth; 1分 VC程序设计试卷3 分 1 一、单项选择题(每小题1分,共20分) 1、假

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号