欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    C++复习题(2).docx

    • 资源ID:3153708       资源大小:56.10KB        全文页数:42页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++复习题(2).docx

    C+复习题C+复习题 一、单选题 1C+语言对c语言做了很多改进,c+语言相对于C语言的最根本的变化是 A. 增加了一些新的运算符 B. 允许函数重载,并允许设置缺省参数 C. 规定函数说明符必须用原型 D. 引进了类和对象的概念 2下列哪个是c+语言的有效标识符? A. -N01 B. No.1 C. 12345 D. int 3下面程序的运行结果为 #include<iostream.h> void main for(int a=0,x=0;!x && a<=10;a+) a+; cout<<a<<endl; A. 10 B. 11 C. 12 D. 0 4下列选项,不正确的是 A. for(int a=1;a<=10;a+); 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<iostream.h> 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. 在定义该函数时所指定的数据类型 7下列程序的输出结果是 #include<iostream.h> int min(int a,int B) if(a<B) return a; else return B; return 0; 1 void main cout<<min(1,min(2,3)<<endl; A. 0 B. 1 C. 2 D. 3 8对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是 A. 公有类型 B. 私有类型 C. 保护类型 D. 友元类型 9在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是 A. 友元函数 B. 虚函数 C. 构造函数 D. 析构函数 10类的析构函数的作用是 A. 一般成员函数的初始化 B. 类的初始化 C. 对象的初始化 D.对象生存器结束时作些清理工作 11下列说法正确的是 A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C. 类的内联函数必须在类体内定义 D. 类的内联函数必须在类体外通过加关键字inline定义 12下面对静态数据成员的描述中,正确的是( D ) A. 静态数据成员可以在类体内进行初始化 B. 静态数据成员不可以被类的对象调用 C. 静态数据成员不能受private控制符的作用 D. 静态数据成员可以直接用类名调用 13下面对于友元函数描述正确的是( C ) A. 友元函数的实现必须在类的内部定义 B. 友元函数是类的成员函数 C. 友元函数破坏了类的封装性和隐藏性 D. 友元函数不能访问类的私有成员 14在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( C ) A. 派生类的对象可以赋给基类的对象 B. 派生类的对象可以初始化基类的引用 C. 派生类的对象可以直接访问基类中的成员 D. 派生类的对象的地址可以赋给指向基类的指针 15下列关于虚基类的描述,错误的是( B ) A. 设置虚基类的目的是为了消除二义性 B. 虚基类的构造函数在非虚基类之后调用 C. 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用 D. 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数 16下列关于多态性的描述,错误的是( C ) A. C+语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态绑定 17下列运算符中,在C+语言中不能重载的是( C ) A. + B. >= C. : D./ 18下面关于类和对象的描述中,错误的是( A ) 2 A. 类就是c语言中的结构体类型,对象就是C语言中的结构体变量 B. 类和对象之间的关系是抽象和具体的关系 C. 对象是类的实例,一个对象必须属于一个已知的类 D. 类是具有共同行为的若干对象的统一描述体 19下面关于break语句的描述中,不正确的是( D ) A. break可以用于循环体内 B. break语句可以在for循环语句中出现多次 C. break语句可以在switch语句中出现多次 D. break语句可用于if条件判断语句内 20下面关于数组的描述错误的是( D ) A. 在c+语言中数组的名字就是指向该数组第一个元素的指针 B. 长度为n的数组,下标的范围是0一n-l C. 数组的大小必须在编译时确定 D. 数组只能通过值参数和引用参数两种方式传递给函数 21下面程序错误的语句是( B ) #include<iostream.h> void main int *p=new int1; p=9; cout << *p <<endl; delete p; A. B. c. D. 22下面的哪个选项不能作为函数的返回类型?( C ) A. void B. int C. new D. long 23下列程序的输出结果为( D ) #include<iostream.h> int func(int n) if(n<1)return 1;else return n+func(n-1); return 0; void main cout<<func(5)<<endl; A. 0 B. 10 C. 15 D. 16 24在C+语言中,数据封装要解决的问题是( D ) A. 数据的规范化 B. 便于数据转换 C. 避免数据丢失 D. 防止不同模块之间数据的非法访问 25对类的构造函数和析构函数描述正确的是( A ) 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下面关于虚函数的描述,错误的是(B) A. 在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B. 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C. 虚函数可以是另一个类的友元函数,但不能是静态成员函数 D. 基类中说明的纯虚函数在其任何派生类中都必须实现 29下面程序的运行结果是( C ) #include<iostream.h> void main int num=1; int &ref=num; ref=ref+2; cout<<num; num=num+3; cout<<ref<<endl; A. 13 B. 16 C. 36 D. 33 30下面关于c+语言的描述错误的是( B ) A. C+语言支持数据封装 B. C+语言中引入友元没有破坏封装性 C. C+语言允许函数名和运算符重载 D. C+语言支持动态联编 31下列程序的运行结果为( B ) #include<iostream.h> void main int a=2; int b=a+1; cout <<a/b<<endl; 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<iostream.h> void main char a='3' switch(a) 4 case'3':cout<<"3" case'2':cout<<"2"break; default:cout<<"1" 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<iostream.h> 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,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. 调用成员函数实现 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 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与语句cout<<endl;不等价的是( D ) A. cout<<n; B. cout<<12; C. cout<<xA; D. cout<<0; 44下面程序的运行结果是( C ) #include<iostream.h> void main 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<iostream.h> void main int i=0,j,k; doi+;k=316-13*i; while( ); j=k/11; cout << "316=13*"<< i << "+11*"<< j; A. k/11 B. k11 C. k/11=0 D. k11=0 47设有数组定义:char array=”China”;,则数组array所占的空间为( C ) 6 A. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节 48下列描述中哪个是正确的?( B ) A. 私有派生的子类无法访问父类的成员 B. 类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的 C. 私有派生类不能作为基类派生子类 D. 私有派生类的所有子孙类将无法继续继承该类的成员 49下列关于构造函数说法不正确的是( C ) A. 构造函数必须与类同名 B. 构造函数可以省略不写 C. 构造函数必须有返回值 D. 在构造函数中可以对类中的成员进行初始化 50如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( D ) A. 一元运算符 B. 二元运算符 C. 选项A)和选项B)都可能 D. 重载错误 7 二、添空题 1在面向对象的程序设计中,类描述的是具有相似性质的一组 _。 正确答案:对象 2继承的方式有公有继承、_和_3种。 正确答案:私有继承、保护继承 3对于下面定义的类MyClass,请在函数f中添加语句把n的值修改为50。 class MyClass public: MyClass(int x)n=x; void SetNum(int n1)n=nl; private:int n; ; void f MyClass *ptr=new MyClass(45); _ 正确答案:ptr->SetNum(50) 4在面向对象方法中,类之间共享属性和操作的机制称为_。 正确答案:继承 5假设int a=1,b=2;则表达式a+-b的值为_。 正确答案:2 6通过使用new和delete两个运算符进行的分配为_分配。 正确答案:动态存储 7下面程序的运行结果为_。 #include<iostream.h> void fun(int x=0,int y=0) cout<<x<<y; void main fun(5); 正确答案:50 8重载的运算符保持其原有的_、优先级和结合性不变。 正确答案:操作数个数 9cout.put(A);,还可以表示为_。 正确答案:cout<< A 10在C+中封装性、继承性和_是面向对象思想的主要特征。 正确答案:多态性 11下面程序的结果为_。 #include<iostream.h> void main int a=1,b=2; bool c=1; 8 if(a>b)| c) cout <<"true"<<endl; else cout << "false"<<endl; 正确答案:true 12MFC框架程序是从_函数开始执行的。 正确答案:WinMain 13假定A为一个类,则语句A(A &p);为该类_函数的原型说明。 正确答案:拷贝构造 14派生类构造函数的执行顺序是先执行_的构造函数,再执行_的构造函数。 正确答案:基类、派生类 15派生类的成员一般分为两部分,一部分是_,另一部分是自己定义的新成员。 正确答案:从基类继承的成员 16如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是_。 正确答案:friend void A; 17消息惟一定义了一个_。一个消息由一个消息_(UINT)和两个参数(WPARAM,LPARAM)组成。 正确答案:事件、名称 18窗口是由应用程序创建的屏幕上的一个_区域。窗口一般由客户区和_组成。 正确答案:矩形、非客户区 19句柄是标识诸如窗口、菜单、图标、内存块、输出设备等_的数值。Windows系统的各种_都是通过句柄来访问的。 正确答案:对象、资源 20MFC(Microsoft Foundation Classes)是一种_的框架,以C+形式封装了大部分的_、定义了应用程序的基本结构和执行结构。 正确答案:应用程序、Windows API, 21消息映射是将_和_函数联系起来的机制。 正确答案:消息、消息处理 22GDI是_的英文单词首字母缩写,组成了Windows操作系统的核心部分。GDI提供高层绘图函数,支持与_无关的图形显示。 正确答案:图形设备界面、设备 23对话框有两种类型,_对话框和_对话框。 正确答案:模式、非模式 24对话框通常作为一个_,包含各种_,用以显示消息和取得用户数据。 正确答案:容器、控件 25控件是应用程序用于_和_的子窗口。 正确答案:输入、输出 26文档和视图结构构成了MFC框架应用程序的核心。其中文档类用于_数据,视图类用于_数据。 正确答案:存储、显示 27单文档应用程序只使用一个文档对象,当选择菜单项“_”“ _”时,不会重新创建一个新文档对象,只是重新初始化文档对象的数据成员。 正确答案:文件、新建 28应用程序类由_类派生,应用程序类封装了程序的初始化、运行和结束等功能。 9 正确答案:CWinApp 29多文档类用于存放文档数据并完成文件I/O,为每个打开的文档生成这个类的一个_,而不是_同一对象。 正确答案:对象、共用 30基于对话框的应用程序的基本结构由2个派生类组成,_类和_类。 正确答案:应用程序、对话框 10 三、程序阅读题 1阅读下面的程序,试求: 给出程序的运行结果。 根据程序的运行结果,说明“+”运算符的结合原则。 #include<iostream.h> 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<iostream.h> int i=0; class A public: Ai+; ; void main A a,b3,*c; c=b; cout << i <<endl; 正确答案:给出程序的运行结果:4 外部变量i的作用是记录调用构造函数的次数。 3阅读下面的程序,试求:给出程序的运行结果。分析for循环的运行机制。 #include<iostream.h> int fun(int a,int n) int result=1; for(int i=1;i<n;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=4,第二次result= 4*a2=20 4阅读下面的程序,试求:在程序中画线处填入合适的语句。分析程序的运行机制。 class Base public: void fun cout << "Base of fun"<<endl; ; class Derived:public Base void fun /显示基类的成员函数fun cout << "Derived of fun"<<endl; ; 正确答案:填入的语句:Base:fun;。 分析程序的运行机制:子类访问父类。 5阅读下面的程序,试求:给出程序的运行结果。指出程序的运行机制。 #include<iostream.h> class A static int n; public:An=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<iostream.h> void main int i; int a33=1,2,3,4,5,6,7,8,9; for(i=0;i<3;i+) cout<<a2-ii<<" " 正确答案:给出程序的运行结果: 7 5 3 若输出a数组中的最后3个数据,改写cout语句: cout<<a2i<<" "。 12 7阅读下面的程序,给出程序的运行结果是什么? #include<iostream.h> void main int t,a,b,c; a=1;b=2;c=2; while(a<b<c) t=a;a=b;b=t;c-; cout<<a<<"," <<b<<"," <<c; 正确答案:程序的运行结果是 1,2,0 注:此程序运行时有一个警告错误warning C4804: '<' : unsafe use of type 'bool' in operation 8阅读下面的程序,给出程序的运行结果是什么? #include<iostream.h> #include<string.h> void main char pl10,p210; strcpy (pl,"abc"); strcpy(p2,"ABC"); char str50="xyz" strcpy(str+2,strcat(pl,p2); cout<<str; 正确答案: 程序的运行结果是 xyabcABC 9阅读下面的程序,给出程序的运行结果是什么? #include<iostream.h> 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.setb;a1.setc;a2.seta;a2.setb;a2.setc;a2.display; 正确答案:程序的运行结果是 1 2 2 10阅读下面的程序,给出程序的运行结果。指出函数 reverse的功能。 #include<iostream.h> void reverse(int a,int n) 13 int i,t; for(i=0;i<n/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;i<10;i+)s+=bi;cout<<s; 正确答案:程序的运行结果:22。 函数 reverse的功能:将b数组中的前8个成员互置。 14 四、问答题 1简述 Windows编程中窗口和句柄的概念。 正确答案: 窗口是由应用程序创建的屏幕上的一个矩形区域。窗口一般由客户区和非客户区组成。客户区用于接收用户输入和显示输出,非客户区用于显示窗口的标题、菜单等。 句柄是标识诸如窗口、菜单、图标、内存块、输出设备等对象的数值。Windows系统的各种资源都是通过句柄来访问的。在程序中,通常用大写字母序列来表示句柄类型。 2在应用程序向导AppWizard中能够创建哪些类型的文件? 正确答案: 在应用程序向导AppWizard中能够创建.cpp(C+源文件)、.h(头文件)、.clw(classwizard信息文件)、.dsw(工作区文件)、.rc(资源文件)、.rc2(资源文件,用于存放由多个不同项目使用的资源)、.bmp(位图文件)、.ico(图标文件)等类型的文件。 3简述Windows编程中的设备环境的概念。 正确答案: 设备环境也称为DC,是由GDI保存的一个数据结构,设备环境包含了输出设备的绘图特征。在MFC中,CDC类实现了对设备环境的封装,CDC类的成员函数封装了各种用于绘制图形的Windows绘图函数(API函数)。除CDC类外,MFC还提供了从CDC类派生的CClientDC类和CWindowDC类,分别代表客户区的设备环境和整个窗口的设备环境(包括非客户区)。 4简述对话框和控件的概念和类型。 正确答案: 对话框通常作为一个容器,包含各种控件,用以显示消息和取得用户数据。对话框有两种类型,模式对话框和非模式对话框。 控件是应用程序用于输入和输出的子窗口。控件通常与对话框相关联,但是它们可以用来和任意的窗口相关联。Windows标准控件由Windows操作系统提供,包括按钮、复选框、列表框和静态文本等。 5多文档应用程序的基本结构由5个派生类组成,简述这5个派生类的名称及作用。 正确答案: (1)应用程序类。由CWinApp类派生,管理整个程序,初始化程序。 (2)文档类。由CDocument派生,用于存放文档数据并完成文件IO,为每个打开的文档生成这个类的一个对象。 (3)主框架窗口类。由CMDIFramewnd派生,用于管理程序的主框架窗口。 (4)子框架窗口类。由CMDIChildWd派生,用于管理子框架窗口。 (5)视图类。由CView或由CView派生的类派生,视图类管理视图窗口,负责数据的显示和处理用户的输入。 6基于表单的应用程序的特点是什么? 正确答案: 基于表单的应用程序也使用文档视图结构。它有一个主框架窗口,可以含有菜单、工具栏及状态栏等用户接口,也有一个视图窗口,称为表单。它是由CFormView类派生,主要用于显示一组控件,而不是作为和用户交互的空白客户区。 如果选择了多文档应用程序,则应用程序可以产生多个表单,如果选择了单文档应用程序,那么应用程序只能有一个表单。 7比较单文档和多文档应用程序中,应用程序类成员函数Initlnstance的初始化工作。 正确答案: 对于单文档和多文档应用程序,应用程序类成员函数Initlnstance的初始化工作主要是文档模板的生成、创建和显示各种窗口。 两者的区别主要在于所使用的文档模板不同。单文档应用程序使用单文档模板类对象建立文档类、根据主框架窗口类和视图类之间的联系,确定当应用程序打开一个文档时,文档模板15 创建什么样的框架窗口、文档和视图。而多文档应用程序使用多文档模板类将子框架窗口类和文档类、视图类联系在一起。 8多文档应用程序中的多种文件类型和多菜单是怎样实现的? 正确答案: 在多文档应用程序中,当新增一种文件类型时,需要在项目中添加一个支持这种文件类型的文档类的视图类和子窗口类,补充其特定功能,然后通过文档模板加入,并定义各自的菜单。 9什么是数据映射机制? 正确答案: MFC通过数据映射机制(data map)设置对话框控件的初始状态及收集用户通过对话框控件的输入。数据映射将控件和对话框的数据成员绑定在一起,数据成员的值反映了控件的状态或控件的内容

    注意事项

    本文(C++复习题(2).docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开