ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:36.10KB ,
资源ID:11805732      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11805732.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++习题集2.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C++习题集2.docx

1、C+习题集2C+面向对象程序设计复习题一、 填空题1C+程序语言中程序从Main()位置开始执行。 2设int a=7;float x=2.5,y=8.2;表达式x+a%3*(int)(y-x)%2/4的值是2.53“判断整数x和整数y是否都为奇数”的C+语言表达式是x%20&y%20。 4将字符串s2连接到字符串s1后的函数调用是strcat(s1,s2)。5设x=2,y=3,z=4;则z+=x+&y+&+z表达式执行后,x、y、z的值分别是3,4,6。6若有函数调用语句 fun(a+b,(y=9,x),37),则其实参的个数是3 。7已知字母a的ASCII码为十进制数97,ch为字符变量,

2、则ch=a+8-5的值为d 。 8.设:int a5=10,20,30,40,50;int *p=&a0;表达式+*p+*(a+3)的值是51 。9若有宏定义: #define T(x,y,z) x*y*z/4coutT(3+4,2*4,4+4)=-10&a=10。 11设有代码“static int a34=1,2, 0, 4,6,8,10;”则a12值为0 。12假定所有变量均已正确定义,下列程序段运行后x的值是3 。a = b = c = 14; x = 35;if(!a)x-;else if(b);if(c)x = 3;else x = 4; 13类的成员函数可以在类体内 定义,也可以

3、在类体外定义。14如类中没有明确定义析构函数,清除对象的工作仍由析构函数来完成,原因是编译器自动提供缺省析构函数。15生成一个派生类对象时,先调用基类的构造函数,然后调用派生类的构造函数。16在继承关系中,一个派生类同时继承自多个基类的情形称为多重继承,一个派生类继承自一个基类的情形称为单继承。17若在I/O流的输出中使用控制符setfill( )设置填充字符,应包含的头文件是iomanip.h。18在私有继承关系下,基类的公有成员和保护成员将成为派生类中的私有成员,它们只能由派生类的成员函数来访问。19在C+中,函数的参数有两种传递方式,它们是值传递和 地址或指针或引用传递 。20.当一个成

4、员函数被调用时,该成员函数的 this指针 指向调用它的对象。21 在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有 作用域分隔符限定时 ,对此数据成员的访问将出现歧义。22 拷贝构造函数使用 引用 作为参数初始化创建中的对象。23 在公有继承的情况下,基类数据成员在派生类中的访问权限 保持不变 。24 描述命题A小于B或小于C的表达式为 AB|Ac&b=c的值是 0 。29 面向对象的程序设计有四大特征,它们是抽象、封装、 继承 、 多态 。30 在Visual C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型 不同 ;在

5、基类和派生类中,成员函数的覆盖是指 派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同 。31 构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、 析构函数没有参数 、 析构函数可以定义为虚函数 。32 动态联编要满足两个条件,它们是 被调用的成员函数是虚函数 、 用指针或引用调用虚函数 。33 在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 抽象类 ,定义该类至少具有一个 纯虚函数 。34 在C+类中,const关键字可以修饰对象和成员函数,const对象不能 被修改 ,const成员

6、函数不能 修改类数据成员 。35 举出C+中两种用户自定义的数据类型: 类 、 枚举 。36 C+中没有字符串类型,字符串是通过 字符数组 来表示的,每一个字符串都有一个结尾字符 0 。37 C+中没有输入输出语句,输入输出是通过 输入输出库 实现的, 写出一条打印整型变量n的输出语句:coutn; 38 举出C+中两种代码复用的方式: 继承 、 复用 。39.C+程序有且只有一个main()。 40.若有变量定义 int x = 7; float a = 2.5, c = 4.7;表达式a + (int)(x/3*(int)(c + 2)/2) % 4 的值是4.5。 41 “x或y中至少有

7、一个小于z”的C+语言表达式是xz | yz | yz。45字符串str长度的函数调用是strlen(str)。 46执行语句“ y = (x = 3, z = -x);”后,变量的值依次为2,2,2。47设 #define a(x) x*x;couta(4+6)endl;上述程序段运行结果为34。 48设x为整型变量,表达数学关系式:13 x 19的C+语言表达式是1119。 49设有代码“static int a34=1,2, 3, 4,5,6;”则a11值为0。50若有定义:char u; int b; float v; double d; 则表达式u * b + d - v的值的类型为

8、double。51假定所有变量均已正确定义,下列程序段运行后x的值是4。a = b = c = 0; x = 35;if(!a)x-;else if(b);if(c)x = 3;else x = 4; 52类的构造函数的主要作用是对对象进行初始化53C+将类继承分为单一继承和多重继承两种。54建立类对象时,为节省内存,系统一般只分配用于对象 的内存。55派生类可以定义其基类中不具备的数据和操作。56operator是C+的一个关键字,它经常和C+的一个运算符连用,构成一个运算符函数名。运算符函数的返回类型不能是void类型。57在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后再

9、执行基类的析构函数。58C+文件的两种类型,分别是字符文件和二进制文件。59在保护继承关系下,基类有公有成员和保护成员将成为派生类中的保护成员,它们只能由派生类的成员来访问。60 下面程序的运行结果是3。#include void main()char a=a,b=j;float x;x=(b-a)/(F-A);printf(%dn,(int)(3.14*x);61 下面程序的运行结果是2 5 8 11 14。#include iostream.h void main( ) int i=1;while (i=15)i+;if (i%3!=2) continue; else cout i=ien

10、dl;62 下面程序的运行结果是_。#include iostream.h class test private:int num; float fl; public:test( ); int getint( )return num; float getfloat( )return fl; test( ); ; test:test( ) cout Initalizing default endl; num=0;fl=0.0; test:test( )cout Desdtructor is active endl; void main( ) test array2; cout array1.get

11、int( ) array1.getfloat( ) endl; Initalizing defaultInitalizing default0 0Desdtructor is activeDesdtructor is active63 下面程序的运行结果是_。#include class Apublic:A()coutA:A() called.n;virtual A()coutA:A() called.n;class B:public Apublic:B(int i)coutB:B() called.n;buf=new chari;virtual B()delete buf;coutB:B()

12、 called.n;private:char *buf;void fun(A *a)delete a;void main()A *a=new B(15);fun(a);A:A() called.B:B() called.B:B() called.A:A() called.64 下面程序的运行结果是_。#include int a =1,3,5,7,9;int *p =a,a+1,a+2,a+3,a+4;void main( )printf(%dt%dt%dn,a4,*(a+2),*p1);printf(%dt%dt%dn,*(p+1)+a2,*(p+4)-*(p+0),*(a+3)%a4);9

13、 5 38 4 7 二、选择题1下列变量名中,(B )是合法的。A.56A B._abc C.d-Ptr D.while 2下列各种运算符中,(A )优先级最高。A. + B.& C.= D.*= 3设变量m,n,a,b,c,d均为0,执行(m = a=b)&(n=c=d)后,m,n的值是(D )。A.0,0 B. 0,1 C. 1,0 D. 1,14. 字符串”tv0whichn”的长度是(B )。A. 4 B. 3 C. 9 D. 字符串有非法字符,输出值不确定 5. 设a=2,b=3,c=2;计算a+=b*=(+b-c+)中a、b、c的值(C )。A.8、6、2 B. 2、4、2 C.1

14、0、8、3 D. 5、3、36. 已知:int i=5,下列do-while循环语句的循环次数为(D)。docouti-endl;i-;while(i!=0);A0 B1 C5 D无限7.下面关于循环语句的描述中,(B )是错误的。A循环体内可以包含有循环语句B循环体内必须同时出现break语句和continue语句C循环体内可以出现选择语句D循环体内可以是空语句8.下面程序段(B )。x=3;doy=x-;if(!y) cout”x”; continue;cout=1 & x=2);A将输出# B将输出#C是死循环 D含有不合法的控制表达式9.在函数的定义格式中,下面各组成部分中,(D )是

15、可以省略的。A函数名 B函数体 C函数数据类型说明 D函数参数 10.在函数的引用调用时,实参和形参应该是使用(C )。A变量值和变量 B地址值和指针C变量值和引用 D地址值和引用11以下关于文件操作的叙述中,不正确的是(B )。A打开文件的目的是使文件对象与磁盘文件建立联系B文件读写过程中,程序将直接与磁盘文件进行数据交换C关闭文件的目的之一是保证将输出的数据写入硬盘文件D关闭文件的目的之一是释放内存中的文件对象12. 若有语句int a10=0,1,2,3,4,5,6,7,8,9,*p=a;则(B )不是对a数组元素的正确引用(其中0i10)。Api B*(*(a+i) Cap-a D*(

16、&ai)13. 以下程序的输出结果是(A )。#include void main()char s=abcdefbcde,*p=s;int v1=0,v2=0,v3=0,v4=0; for (p;*p;p+) switch(*p) case a:v1+;break;case b:v3+;break;case e:v2+;break;default: v4+;coutv1,v2,v3,v4endl;A1,2,2,5 B4,7,5,8 C1,5,3,10 D8,8,8,814. 下列结构体定义,正确的是 。CA. record B. struct record int no; int no; ch

17、ar num16; char num16;float score ; float score ; ; C. struct record D. struct record int no; int no char num16; char num16 float score ; float score ; 15. 下列是构造函数的特点,(C )是错误的。A构造函数是一种成员函数,它具有一般成员函数的特点B构造函数的名称与其类名相同C构造函数必须指明其类型D一个类中可定义一个或多个构造函数16. 关于友元函数的描述中,(A )是错的。A A 友元函数是成员函数,它被说明在类体内 B B 友元函数可直接

18、访问类中的私有成员C C 友元函数破坏封装性,使用时尽量少用D D 友元类中的所有成员函数都是友元函数17. 下列对派生类的描述中,(C )是错误的。A A 一个派生类可以作为另一个派生类的基类B B 派生类至少应有一个基类C C 基类中成员访问权限继承到派生类中都保持不变D D 派生类的成员除了自已定义的成员外,还包含了它的基类成员18. C+类体系中,能被派生类继承的有(B )。A构造函数 B虚函数 C友元函数 D析构函数19关于下列虚函数的描述中,(C )是正确的。A 虚函数是一个static存储类的成员函数 B 虚函数是一个非成员函数C 基类中说明了虚函数后,派生类中将其对应的函数可不

19、必说明为虚函数D 派生类的虚函数与基类的虚函数应具有不同的类型或个数20. 以下有关静态数据成员函数的叙述不正确的是(B )。A静态成员函数属于整个类B对静态成员函数的引用不允许使用对象名C在静态成员函数中不能直接引用类的非静态成员D使用类名可以直接调用其静态成员函数21. 下列有关运算符重载的描述中,(B )是正确的。A运算符重载可改变其优先级 B运算符重载不改变其语法结构 C运算符重载可改变其结合性 D运算符重载可改变其操作数的个数22.对new运算符的下列描述中,(B )是错误的。A. 它可以动态创建对象和对象数组B. 用它创建对象数组时必须指定初始值C. 用它创建对象时要调用构造函数D

20、. 用它创建的对象可以使用运算符delete来释放23.下列是为字符数组赋字符串的语句组,其中错误是(A )。A.char s10; s=”program”; B.char s=”program”;C.char s10=”Hello!”; D.char s10;strcpy(s,”hello!”);24.当调用函数时,实参是一个一维数组名a,则向函数传送的是(D )。A.数组的长度 B.数组所有元素的值C.数组元素a0的值 D.数组元素a0的地址25. 下列有关类的说法不正确的是( C)。A A 对象是类的一个实例B B 任何一个对象只能属于一个具体的类C C 一个类只能有一个对象D D 类与

21、对象的关系和数据类型与变量的关系相似26、下面关于类概念的描述中,( D )是错误的。A)类是抽象数据类型的实现 B)类是具有共同行为的若干对象的统一描述体C)类是创建对象的样板 D)类就是C语言中的结构体类型27、面向对象程序设计思想的主要特征中不包括 (D ) 。A)封装性 B)多态性 C)继承性 D)功能分解,逐步求精28、在C+中,函数原型不能标识 (D ) 。A)函数的返回类型 B)函数参数的个数 C)函数参数类型 D)函数的功能29、有关析构函数的说法不正确的是 (B )。A) 析构函数有且仅有一个 B) 析构函数和构造函数一样可以有形参C) 析构函数的功能是用来释放一个对象 D)

22、 析构函数无任何函数类型30、已知X类.则当程序执行到语句,X array3;时,调用了( D )次构造函数。A)0 B)1 C)2 D)331、类定义的内容允许被其他对象无限制地存取是( C )。A)private 部分 B)protected 部分 C)public 部分 D)以上都不对32、关于new运算符的下列描述中,( D )是错误的.。A) 它可以用来动态创建对象和对象数组B) 使用它创建对象或对象数组,可以使用运算符DELETE删除C) 使用它创建对象时要调用构造函数D) 使用它调用对象数组时不许指定初始值33、对于下面程序段,表达式正确的是( B )。class Base pu

23、blic:int b;class Base1:public base ;class Base2:public base ;class Derived:public base1,public base2public:int fun ( );Derived d;A) d. Base1:b B)d. Base :b C) d.b D) d. Base : fun( )34、可以用p.a的形式访问派生类对象p 的基类成员a其中a是( D )。A)私有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员D)公有继承的公有成员35、下列关于C+类的描述中错误的是 (C ) 。A)类与类之间可以通过一

24、些手段进行通信和联络 B)类用于描述事物的属性和对事物的操作C)类与类之间必须是平等的关系,D)类与类之间可以通过封装而具有明确的独立性36、下列描述中哪个是正确的( B )。 A)私有派生的子类无法访问父类的成员 B)类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的 C)私有派生类不能作为基类派生子类 D)私有派生类的所有子孙类将无法继续继承该类的成员37、下列关于构造函数说法不正确的是(C )。 A)构造函数必须与类同名 B)构造函数可以省略不写 C)构造函数必须有返回值 D)在构造函数中可以对类中的成员进行初始化38、如果友元函数重载一个运算符

25、时,其参数表中没有任何参数则说明该运算符是( D )。 A)一元运算符 B)二元运算符C)选项A)和选项B)都可能 D)重载错误39、在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是(D )。 A)一元成员运算符 B)二元成员运算符 C)一元友元运算符 D)选项B)和选项C)都可能40、一个类的友元函数能够访问该类的( D )。 A)私有成员 B)保护成员 C)公有成员 D)所有成员41、下列关于类定义的说法中,正确的是(A )。A)类定义中包括数据成员和函数成员的声明B)类成员的缺省访问权限是保护的C) 数据成员必须被声明为私有的D)成员函数只能在类体外进行定义42、通过运算符

26、重载,可以改变运算符原有的(A )。A)操作数类型B)操作数个数C)优先级D)结合性 43、在C+语言中,数据封装要解决的问题是( D )。A) 数据的规范化 B)便于数据转换 C)避免数据丢失 D)防止不同模块之间数据的非法访问44、对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D )。A)公有类型 B)私有类型 C)保护类型 D)友元类型45、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是( C )。A)友元函数 B)虚函数 C)构造函数 D) 析构函数46、类的析构函数的作用是( D )。A)一般成员函数的初始化 B)类的初始化C)对象的初始化 D)删除类创建的对象47、下列说法正确的是(B )。A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B) 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C)类的内联函数必须在类体内定义D)类的内联函数必须在类体外通过加关键字inline定义48、下列对派生类的描述中,错误的是( D )。 A)一个派生类可以作为另一个派生类的基类B) 派生类至少有一个基类C)派生类的成员除了自己的成员外,还包含了它的基类的成员D)派生类中继承的基类成员的访问权限到派生类保持不变49、运算符的重载是对已有的运算符

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2