C++复习题(2).docx

上传人:牧羊曲112 文档编号:3153708 上传时间:2023-03-11 格式:DOCX 页数:42 大小:56.10KB
返回 下载 相关 举报
C++复习题(2).docx_第1页
第1页 / 共42页
C++复习题(2).docx_第2页
第2页 / 共42页
C++复习题(2).docx_第3页
第3页 / 共42页
C++复习题(2).docx_第4页
第4页 / 共42页
C++复习题(2).docx_第5页
第5页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

1、C+复习题C+复习题 一、单选题 1C+语言对c语言做了很多改进,c+语言相对于C语言的最根本的变化是 A. 增加了一些新的运算符 B. 允许函数重载,并允许设置缺省参数 C. 规定函数说明符必须用原型 D. 引进了类和对象的概念 2下列哪个是c+语言的有效标识符? A. -N01 B. No.1 C. 12345 D. int 3下面程序的运行结果为 #include void main for(int a=0,x=0;!x & a=10;a+) a+; coutaendl; A. 10 B. 11 C. 12 D. 0 4下列选项,不正确的是 A. for(int a=1;a=10;a+)

2、; B. int a=1;do a+: while(a=10) C. int a=1;while(a=10) a+; D. for(int a=1;a=10;a+)a+; 5下列程序的输出结果为 #include void main char *a=hello,the,world; char *pa=a; pa+; cout *pa endl; A. hello B. the C. world D. hellotheworld 6决定C+语言中函数的返回值类型的是 A. return语句中的表达式类型 B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数

3、时所指定的数据类型 7下列程序的输出结果是 #include int min(int a,int B) if(aB) return a; else return B; return 0; 1 void main coutmin(1,min(2,3)= C. : D./ 18下面关于类和对象的描述中,错误的是( A ) 2 A. 类就是c语言中的结构体类型,对象就是C语言中的结构体变量 B. 类和对象之间的关系是抽象和具体的关系 C. 对象是类的实例,一个对象必须属于一个已知的类 D. 类是具有共同行为的若干对象的统一描述体 19下面关于break语句的描述中,不正确的是( D ) A. bre

4、ak可以用于循环体内 B. break语句可以在for循环语句中出现多次 C. break语句可以在switch语句中出现多次 D. break语句可用于if条件判断语句内 20下面关于数组的描述错误的是( D ) A. 在c+语言中数组的名字就是指向该数组第一个元素的指针 B. 长度为n的数组,下标的范围是0一n-l C. 数组的大小必须在编译时确定 D. 数组只能通过值参数和引用参数两种方式传递给函数 21下面程序错误的语句是( B ) #include void main int *p=new int1; p=9; cout *p endl; delete p; A. B. c. D.

5、22下面的哪个选项不能作为函数的返回类型?( C ) A. void B. int C. new D. long 23下列程序的输出结果为( D ) #include int func(int n) if(n1)return 1;else return n+func(n-1); return 0; void main coutfunc(5)endl; A. 0 B. 10 C. 15 D. 16 24在C+语言中,数据封装要解决的问题是( D ) A. 数据的规范化 B. 便于数据转换 C. 避免数据丢失 D. 防止不同模块之间数据的非法访问 25对类的构造函数和析构函数描述正确的是( A )

6、 A. 构造函数可以重载,析构函数不能重载 B. 构造函数不能重载,析构函数可以重载 c. 构造函数可以重载,析构函数也可以重载 D. 构造函数不能重载,析构函数也不能重载 3 26下面对静态数据成员的描述中,正确的是(A) A. 静态数据成员是类的所有对象共享的数据 B. 类的每个对象都有自己的静态数据成员 C. 类的不同对象有不同的静态数据成员值 D. 静态数据成员不能通过类的对象调用 27如果类A被说明成类B的友元,则(D) A. 类A的成员即类B的成员 B. 类B的成员即类A的成员 C. 类A的成员函数不得访问类B的成员 D. 类B不一定是类A的友元 28下面关于虚函数的描述,错误的是

7、(B) A. 在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B. 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C. 虚函数可以是另一个类的友元函数,但不能是静态成员函数 D. 基类中说明的纯虚函数在其任何派生类中都必须实现 29下面程序的运行结果是( C ) #include void main int num=1; int &ref=num; ref=ref+2; coutnum; num=num+3; coutrefendl; A. 13 B. 16 C. 36 D. 33 30下面关于c+语言的描述错误的是( B ) A. C+语言支持数据封装 B

8、. C+语言中引入友元没有破坏封装性 C. C+语言允许函数名和运算符重载 D. C+语言支持动态联编 31下列程序的运行结果为( B ) #include void main int a=2; int b=a+1; cout a/bendl; A. 0.66667 B. 0 C. 0.7 D. 0.66666666 32设int a=1,b=2;,则(a+)+b和a+b这两个表达式的值分别为( A ) A. 3,3 B. 3,4 C. 4,3 D. 4,4 33下面程序的运行结果为( D ) #include void main char a=3; switch(a) 4 case3:cou

9、t3; case2:cout2;break; default:cout1; A. 3 B. 321 C. 31 D. 32 34存在定义int a10,x,*pa;,若pa=&a0,下列的哪个选项和其他3个选项不是等价的?( A ) A. x=*pa; B. x=*(a+1); C. x=*(pa+1); D. x=a1; 35下面程序的运行结果为 ( D ) #include void swap(int &a,int b) int temp; temp=a+; a=b;b=temp; void main int a=2,b=3;swap(a,b); cout a , b endl; A. 2

10、,3 B. 3,2 C. 2,2 D. 3,3 36下面关于C+语言变量的叙述错误的是( B ) A. 在C+语言中变量分为auto,static,extern和register四种存储类型 B. 自动变量和外部变量的作用域为整个程序 C. 内部静态变量的作用域是定义它的函数 D. 外部静态变量的作用域是定义它的文件 37为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( A ) A. public B. protected C. private D. static 38在C+语言程序中,对象之间的相互通信通过( C ) A. 继承实现 B. 调用成员函数实

11、现 C. 封装实现 D. 函数重载实现 39类的析构函数是在什么时候调用的?( C ) A. 类创建时 B. 创建对象时 C. 删除对象时 D. 不自动调用 40通常拷贝构造函数的参数是( C ) A. 某个对象名 B. 某个对象的成员名 C. 某个对象的引用名 D. 某个对象的指针名 41在C+语言类体系中,不能被派生类继承的有( B ) A. 转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数 42 5 试题内容:对于类定义, 下面正确的叙述是( C ) class A public: virtual void funcl void func2 ; class B:public A

12、 public: void funclcout”class B func 1”endl; viauM void func2cout”class B func 2”endl; ; A. A:func2和B:funcl都是虚函数 B. A:func2和B:funcl都不是虚函数 C. B:funcl是虚函数,而A:func2不是虚函数 D. B:funcl不是虚函数,而A:fune2是虚函数 43与语句coutendl;不等价的是( D ) A. coutn; B. cout12; C. coutxA; D. cout0; 44下面程序的运行结果是( C ) #include void main

13、int i=1; while(i=8) if(+i%3!=2) continue; else cout i; A. 25 B. 36 C. 258 D. 369 45已知有定义, 则下列选项错误的是( B ) const int D=5; int i=1; double f=0.32; char c=15; A. +i; B. D-; C. c+; D. -f 46下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的选项是( B ) #include void main int i=0,j,k; doi+;k=316-13*i; while( ); j

14、=k/11; cout 316=13* i +11*SetNum(50) 4在面向对象方法中,类之间共享属性和操作的机制称为_。 正确答案:继承 5假设int a=1,b=2;则表达式a+-b的值为_。 正确答案:2 6通过使用new和delete两个运算符进行的分配为_分配。 正确答案:动态存储 7下面程序的运行结果为_。 #include void fun(int x=0,int y=0) coutxy; void main fun(5); 正确答案:50 8重载的运算符保持其原有的_、优先级和结合性不变。 正确答案:操作数个数 9cout.put(A);,还可以表示为_。 正确答案:co

15、ut A 10在C+中封装性、继承性和_是面向对象思想的主要特征。 正确答案:多态性 11下面程序的结果为_。 #include void main int a=1,b=2; bool c=1; 8 if(ab)| c) cout trueendl; else cout falseendl; 正确答案:true 12MFC框架程序是从_函数开始执行的。 正确答案:WinMain 13假定A为一个类,则语句A(A &p);为该类_函数的原型说明。 正确答案:拷贝构造 14派生类构造函数的执行顺序是先执行_的构造函数,再执行_的构造函数。 正确答案:基类、派生类 15派生类的成员一般分为两部分,一

16、部分是_,另一部分是自己定义的新成员。 正确答案:从基类继承的成员 16如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是_。 正确答案:friend void A; 17消息惟一定义了一个_。一个消息由一个消息_(UINT)和两个参数(WPARAM,LPARAM)组成。 正确答案:事件、名称 18窗口是由应用程序创建的屏幕上的一个_区域。窗口一般由客户区和_组成。 正确答案:矩形、非客户区 19句柄是标识诸如窗口、菜单、图标、内存块、输出设备等_的数值。Windows系统的各种_都是通过句柄来访问的。 正确答案:对象、资源 20MFC(Microsoft F

17、oundation Classes)是一种_的框架,以C+形式封装了大部分的_、定义了应用程序的基本结构和执行结构。 正确答案:应用程序、Windows API, 21消息映射是将_和_函数联系起来的机制。 正确答案:消息、消息处理 22GDI是_的英文单词首字母缩写,组成了Windows操作系统的核心部分。GDI提供高层绘图函数,支持与_无关的图形显示。 正确答案:图形设备界面、设备 23对话框有两种类型,_对话框和_对话框。 正确答案:模式、非模式 24对话框通常作为一个_,包含各种_,用以显示消息和取得用户数据。 正确答案:容器、控件 25控件是应用程序用于_和_的子窗口。 正确答案:输

18、入、输出 26文档和视图结构构成了MFC框架应用程序的核心。其中文档类用于_数据,视图类用于_数据。 正确答案:存储、显示 27单文档应用程序只使用一个文档对象,当选择菜单项“_”“ _”时,不会重新创建一个新文档对象,只是重新初始化文档对象的数据成员。 正确答案:文件、新建 28应用程序类由_类派生,应用程序类封装了程序的初始化、运行和结束等功能。 9 正确答案:CWinApp 29多文档类用于存放文档数据并完成文件I/O,为每个打开的文档生成这个类的一个_,而不是_同一对象。 正确答案:对象、共用 30基于对话框的应用程序的基本结构由2个派生类组成,_类和_类。 正确答案:应用程序、对话框

19、 10 三、程序阅读题 1阅读下面的程序,试求: 给出程序的运行结果。 根据程序的运行结果,说明“+”运算符的结合原则。 #include class A int a; public:Aa=0; A(int aa) a=aa; cout a+; ; void main A x,y(2),z(3); cout endl; 正确答案:给出程序的运行结果:23 因为“+”运算符是右结合的,所以先输出,后加1,结果为23。 2阅读下面的程序,试求:给出程序的运行结果。分析变量i的作用。 #include int i=0; class A public: Ai+; ; void main A a,b3,

20、*c; c=b; cout i endl; 正确答案:给出程序的运行结果:4 外部变量i的作用是记录调用构造函数的次数。 3阅读下面的程序,试求:给出程序的运行结果。分析for循环的运行机制。 #include int fun(int a,int n) int result=1; for(int i=1;in;i+) result= result * ai; return result; void main int a3=3,4,5; cout fun(a,3)endl; 11 正确答案:给出程序的运行结果:20 分析for循环的运行机制: for循环执行2次,第一次result= 1*a1=

21、4,第二次result= 4*a2=20 4阅读下面的程序,试求:在程序中画线处填入合适的语句。分析程序的运行机制。 class Base public: void fun cout Base of funendl; ; class Derived:public Base void fun /显示基类的成员函数fun cout Derived of funendl; ; 正确答案:填入的语句:Base:fun;。 分析程序的运行机制:子类访问父类。 5阅读下面的程序,试求:给出程序的运行结果。指出程序的运行机制。 #include class A static int n; public:An

22、=1; A(int num) n=num; void print cout n; ; int A:n=2; void main A a,b(3);a.print;b.print;cout endl; 正确答案:给出程序的运行结果:33。 指出程序的运行机制:静态数据成员的使用。 6阅读下面的程序,给出程序的运行结果。 若输出a数组中的最后3个数据,如何改写cout语句。 #include void main int i; int a33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) couta2-ii ; 正确答案:给出程序的运行结果: 7 5 3 若输出a数组中的最后3

23、个数据,改写cout语句: couta2i ;。 12 7阅读下面的程序,给出程序的运行结果是什么? #include void main int t,a,b,c; a=1;b=2;c=2; while(abc) t=a;a=b;b=t;c-; couta, b, c; 正确答案:程序的运行结果是 1,2,0 注:此程序运行时有一个警告错误warning C4804: : unsafe use of type bool in operation 8阅读下面的程序,给出程序的运行结果是什么? #include #include void main char pl10,p210; strcpy (

24、pl,abc); strcpy(p2,ABC); char str50=xyz; strcpy(str+2,strcat(pl,p2); coutstr; 正确答案: 程序的运行结果是 xyabcABC 9阅读下面的程序,给出程序的运行结果是什么? #include int c; class A private:int a;static int b;public:Aa=0;c=0; void setaa+; void setbb+; void setcc+; void display cout a b c; ; int A:b=0; void main A a1,a2;a1.seta;a1.s

25、etb;a1.setc;a2.seta;a2.setb;a2.setc;a2.display; 正确答案:程序的运行结果是 1 2 2 10阅读下面的程序,给出程序的运行结果。指出函数 reverse的功能。 #include void reverse(int a,int n) 13 int i,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; void main int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi;couts; 正确答案:程序的运行结果:2

26、2。 函数 reverse的功能:将b数组中的前8个成员互置。 14 四、问答题 1简述 Windows编程中窗口和句柄的概念。 正确答案: 窗口是由应用程序创建的屏幕上的一个矩形区域。窗口一般由客户区和非客户区组成。客户区用于接收用户输入和显示输出,非客户区用于显示窗口的标题、菜单等。 句柄是标识诸如窗口、菜单、图标、内存块、输出设备等对象的数值。Windows系统的各种资源都是通过句柄来访问的。在程序中,通常用大写字母序列来表示句柄类型。 2在应用程序向导AppWizard中能够创建哪些类型的文件? 正确答案: 在应用程序向导AppWizard中能够创建.cpp(C+源文件)、.h(头文件

27、)、.clw(classwizard信息文件)、.dsw(工作区文件)、.rc(资源文件)、.rc2(资源文件,用于存放由多个不同项目使用的资源)、.bmp(位图文件)、.ico(图标文件)等类型的文件。 3简述Windows编程中的设备环境的概念。 正确答案: 设备环境也称为DC,是由GDI保存的一个数据结构,设备环境包含了输出设备的绘图特征。在MFC中,CDC类实现了对设备环境的封装,CDC类的成员函数封装了各种用于绘制图形的Windows绘图函数(API函数)。除CDC类外,MFC还提供了从CDC类派生的CClientDC类和CWindowDC类,分别代表客户区的设备环境和整个窗口的设备

28、环境(包括非客户区)。 4简述对话框和控件的概念和类型。 正确答案: 对话框通常作为一个容器,包含各种控件,用以显示消息和取得用户数据。对话框有两种类型,模式对话框和非模式对话框。 控件是应用程序用于输入和输出的子窗口。控件通常与对话框相关联,但是它们可以用来和任意的窗口相关联。Windows标准控件由Windows操作系统提供,包括按钮、复选框、列表框和静态文本等。 5多文档应用程序的基本结构由5个派生类组成,简述这5个派生类的名称及作用。 正确答案: (1)应用程序类。由CWinApp类派生,管理整个程序,初始化程序。 (2)文档类。由CDocument派生,用于存放文档数据并完成文件IO

29、,为每个打开的文档生成这个类的一个对象。 (3)主框架窗口类。由CMDIFramewnd派生,用于管理程序的主框架窗口。 (4)子框架窗口类。由CMDIChildWd派生,用于管理子框架窗口。 (5)视图类。由CView或由CView派生的类派生,视图类管理视图窗口,负责数据的显示和处理用户的输入。 6基于表单的应用程序的特点是什么? 正确答案: 基于表单的应用程序也使用文档视图结构。它有一个主框架窗口,可以含有菜单、工具栏及状态栏等用户接口,也有一个视图窗口,称为表单。它是由CFormView类派生,主要用于显示一组控件,而不是作为和用户交互的空白客户区。 如果选择了多文档应用程序,则应用程

30、序可以产生多个表单,如果选择了单文档应用程序,那么应用程序只能有一个表单。 7比较单文档和多文档应用程序中,应用程序类成员函数Initlnstance的初始化工作。 正确答案: 对于单文档和多文档应用程序,应用程序类成员函数Initlnstance的初始化工作主要是文档模板的生成、创建和显示各种窗口。 两者的区别主要在于所使用的文档模板不同。单文档应用程序使用单文档模板类对象建立文档类、根据主框架窗口类和视图类之间的联系,确定当应用程序打开一个文档时,文档模板15 创建什么样的框架窗口、文档和视图。而多文档应用程序使用多文档模板类将子框架窗口类和文档类、视图类联系在一起。 8多文档应用程序中的多种文件类型和多菜单是怎样实现的? 正确答案: 在多文档应用程序中,当新增一种文件类型时,需要在项目中添加一个支持这种文件类型的文档类的视图类和子窗口类,补充其特定功能,然后通过文档模板加入,并定义各自的菜单。 9什么是数据映射机制? 正确答案: MFC通过数据映射机制(data map)设置对话框控件的初始状态及收集用户通过对话框控件的输入。数据映射将控件和对话框的数据成员绑定在一起,数据成员的值反映了控件的状态或控件的内容

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号