您好,欢迎访问三七文档
《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“”MyClassa[3],*p[2];”语句时,自动调用该类构造函数的次数为()A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为()A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的()A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是()A、构造函数可以重载,析构函数不能重载。B、构造函数不能重载,析构函数可以重载。C、构造函数可以重载,析构函数也可以重载。D、构造函数和析构函数都不可以重载。5、下列语句的运行结果为()#includeiostream.hsrtuctCOMPLEX{intx;inty;}cNum[2]={1,3,2,7};voidmain(){coutcNum[0].y*cNum[1]xendl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是()A、AB()和~AB()B、AB(int)和~AB()C、AB()和~AB(delete)D、AB()和int~AB()7、在C++中,若对函数未加说明,则函数的隐含类型是()A、intB、doubleC、voidD、char8、已知类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、CFrameWnd14、可以利用控件的()属性和Tab键顺序来为控件分组。A、IDB、TabstopC、GroupD、Caption15、根据对话框的行为性质,对话框可以分为两类:()A、对话框资源和对话框类B、模式对话框和非模式对话框C、对话框资源和对话框模板D、消息对话框和模式对话框16、以下控件中,()没有Caption属性。A、按钮B、群组框C、编辑控件D、静态控件17、菜单项助记符前用()引导。A、%B、&C、#D、$18、更新菜单状态的消息是()。A、WM_COMMANDB、UPDATEC、ON_UPDATE_COMMAND_UID、INVALIDATE19、关于工具栏、菜单和加速键的关系,正确的说法是()。A、工具按钮与菜单必须一一对应B、工具按钮与加速键一一对应C、工具按钮不必与菜单一一对应D、菜单与加速键一一对应20、使用GetWindowDC()和GetDC()获取的设备上下文在退出时,必须调用()释放设备上下文。A、ReleaseDC()B、delete()C、DeleteDC()D、Detach()二、填空题(每空1分,共25分)1、VC++开发环境中,int型数据占4个字节,shortint占_______个字节,longint占_________个字节。2、若for循环的“头”为“for(inti=1;i10;i++)”,并且在循环体中不会修改i的值,则循环体将被重复执行____________次后结束。3、两个函数的函数名________,但参数的个数或对应参数的类型_________时,则称为重载函数。4、若ch为char型变量,n为int型变量,则下列语句ch=’a’;n=3;ch=ch+n;cout”ch=”ch;执行的结果是__________。5、C++中函数的参数传递一种是按值传递,另一种是地址传递或________传递。6、C++运行时的多态性通过______________来实现,而编译时的多态性通过_____________来实现。7只读成员函数用_____________关键字标识,内联成员函数用___________关键字标识。8、classtest{public:staticintx;};testt1,t2;t1.x=25;程序运行到这里时,t2.x的值为____________。9、所有的文档类都派生于_______________,所有的视图类都派生于:_____________。10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了________机制。将公共基类声明为它以后,它在派生类中只产生一个实例。11、在代码中,使用CWnd::____________函数可实现控件与其成员变量之间的数据的传输。12、列表框ClistBox类的成员函数______________用来向列表框增加列表项,成员函数____________用来清除列表项所有项目。13、:_________________是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。14、Windows程序中的消息有窗口消息、命令消息和__________消息三种类型。15、MFC中的集合类包括、、。16、在进行绘图时,用于指定图形的填充样式,________________用于指定图形的边框样式。三选择填空题(每空1分,共15分)1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行⑴的构造函数,接着执行⑵的构造函数,然后执行___⑶___的构造函数,最后才执行⑷的构造函数。A、基类的对象成员B、派生类的对象成员C、基类D、派生类2、[5]代表窗口客户区的显示设备上下文,[6]代表整个窗口的显示设备上下文。A、CPaintDCB、CClientDCC、CWindowDCD、CMetaFileDC3、消息循环的处理过程如下:⑺函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到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、GetPosE、SetScrollPosF、GetScrollPosG、GetScrollRange四写出下列程序的运行结果(每小题5分,共15分)1、.#includeiostream.hclassA{int*a;public:A(intx){a=newint(x);cout*a=*aendl;deletea;}};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″endl;}voidmain(){testx[3];cout″Exitingmain″endl;}3、#includeiostream.hclassA{public:virtualvoidfun(){coutI'mclassAendl;}};classB:publicA{public:voidfun(){coutI'mclassBendl;}};classC:publicB{public:voidfun(){coutI'mclassCendl;}};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。#includeiostream.hclassbase{intX;public:_________[1]__________//为X置值_________[2]__________//取X值};voidmain(){basetest;test.init(6);couttest.GetNum();}2、一个类的头文件如下所示,主程序中产生对象T,且T.num=10,并使用Print()函数输出这个对象的值。classtest{private:intnum;public:test(int);voidPrint();};test::test(intn){num=n;}voidtest::Print(){coutnumendl;}#includeiostream.hvoidmain(){______[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文件的内容《VC程序设计》试题1答案及评分标准一、单项选择题(每小题1分,共20分)题号12345
本文标题:VC_复习题+答案
链接地址:https://www.777doc.com/doc-2866016 .html