您好,欢迎访问三七文档
C++练习题一、选择题1、下列关键字中,()不是类定义中使用的关键字。A.classB.publicC.switchD.privateswitch要和case连用,用于多分支的选择结构,比if…else结构清晰2、在new运算符的下列描述中,()是错误的。A.它可以动态创建对象和对象数组;B.用它创建对象数组时必须指定初始值;只能先创建对象数组,再用循环赋值C.用它创建对象时要调用构造函数;D.用它创建的对象应使用运算符delete来释放。3、主函数可以访问派生类的对象中它的哪一类基类成员?()A.公有继承的基类的公有成员基类的公有成员,在公有继承下,仍然是公有的,可以在类外访问B.公有继承的基类的保护成员基类的保护成员,在公有继承下,仍然是保护的,不可以在类外访问C.公有继承的基类的私有成员基类的私有成员,在公有继承下,仍然是私有的,不可以在类外访问D.保护继承的基类的公有成员基类的公有成员,在保护继承下,变成保护的,不可以在类外访问4、定义重载函数的下列条件中,()是错误的。A.要求参数个数不同;B.要求参数类型不同;C.要求函数返回值类型不同;D.要求在参数个数相同时,参数类型的顺序不同。5、下列函数中,()不能重载。A.成员函数B.非成员函数C.构造函数D.析构函数6、下列构造函数的特点中,()是错误的。A.构造函数具有一般成员函数的特点;B.构造函数的名称与其类名相同;C.构造函数必须指明其类型;构造函数是没有返回值,更谈不上返回值的类型D.一个类中可定义1个或多个构造函数。7、关于成员函数特征的下述描述中,()是错误的。A.成员函数必须要写在类的内部B.成员函数可以重载;C.成员函数可以设置参数的缺省值;D.成员函数可以是静态的。8、C++语言的基本数据类型包括()。A.整型、实型、逻辑型、空型B.整型、实型、字符型、空型C.整型、字符型、逻辑型、空型D.整型、实型、指针型、字符型9、下列关于指针的运算中,()是非法的。A.两个指针在一定条件下,可以进行相等或不等的运算;B.可以用一个空指针赋值给某个指针;C.一个指针可以加上两个整数之差;D.两个指针在一定条件下,可以相加。10、在C++中,关于下列设置缺省参数值的描述中,正确的是()。A.不允许设置缺省参数值;B.在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C.只能在函数的定义中指定参数的缺省值;D.设置缺省参数值时,必须全部都设置。11、预处理命令在程序中是以()开头的。A.*B.#C.:D./12、按照标识符的要求,()符号不能组成标识符。A.-B._C.大小写字母D.数字字符13、假定a为一个数组名,则下面的哪一种表示有错误。()A.a[i]B.*(a+1)C.*aD.*a++*与++优先级相同,结合方向是右结合,但是a++是后缀形式,所以先执行*a取出a中的值,然后,让指针a自加,即:向下移动一位。数组名是首地址不错,但是数组名是个常量,常量不可以自加。比如:5++,在C、C++中都是错误的。14、关于delete运算符的下列描述中,错误的是()。A.它必须用于new返回的指针;B.使用它删除对象时要调用析构函数;C.对一个指针可以使用多次该运算符;默认的拷贝构造函数就是浅拷贝,对一个指针删除了两次,是不对的。D.指针名前只有一对方括号符号,不管所删除数组的维数。15、下列对派生类的描述中,()是错误的。A.一个派生类可以作为另一个派生类的基类;B.派生类至少应有一个基类;C.基类中成员的访问权限被派生类继承后都不改变;继承有三种方式,public,private,protected,不同的继承方式,导致基类成员的访问权限发生变化。D.派生类的成员除了自己定义的成员外,还包含了它的基类成员。16、main函数在源程序中的位置()。A.必须在最开始处B.必须在子函数的后面C.可以任意D.必须在最后17、在c++语言中,要求参加运算的数必须是整数的运算符是()。A./B.!C.%D.==18、对两个基本类型相同的指针变量,不能进行的运算是()。A.+B.-C.=D.==19、执行C++程序时出现的“溢出”属于()错误。A.运行B.链接C.编译D.逻辑20、下列关于引用的说法错误的是()。A.不能声明一个指针的引用;指针也是可以有引用的。B.引用必须在定义的同时进行初始化;C.返回引用的函数,可以作为左值被调用;D.使用引用参数,可以实现将实参的地址传递给行参。21、inti,int*constp=&i,说明不能修改()。A.p指针的指向;int*constp说明p是指针常量,说明指针的指向不可发生改变,所以不能改变p指针的指向。但是通过p可以间接改变变量i的值。B.p指针指向的变量;C.i的值;D.上述A、B、C三者。22、下面的函数声明中,()是”voidBC(inta,intb);”的重载函数?A.intBC(inta,intb)B.voidBC(inta,charb)C.floatBC(inta,intb,intc=0)D.voidBC(inta,intb=0)integer与char类型,在一定范围内是通用的,在0-255之间。23、下列静态数据成员的特性中,错误的是()。A.说明静态数据成员时前边要加修饰符static;一定要有B.引用静态数据成员时,必须用类名和作用域运算符引导;使用对象名也可以的C.静态数据成员是所有对象所共用的;D.静态数据成员要在类的定义之外进行初始化。24、判断字符串s1和s2是否相等的表达式为()。A.s1=s2B.s1==s2C.strcpy(s1,s2)==0D.strcmp(s1,s2)==025、若用数组名作为调用函数的实际参数,则传递给形式参数的是()。A.数组存储首地址;B.数组的第一个元素值;C.数组中全部元素的值;D.数组元素的个数。26、在C++程序中使用的cin标识符是系统类库中定义的()类中的一个对象。A.istreamB.ostreamC.iostreamD.fstream27、在下列各函数中,不是类的成员函数的是()。A.构造函数B.析构函数C.友元函数D.拷贝构造函数28、假定AA是一个类,abc()是该类的一个成员函数(memberfunction),则参数表中隐含的第一个参数为()。A.abcB.*thisC.thisD.this&29、类中定义的成员默认为()访问属性。A.publicB.privateC.protectedD.friend30、假定AB为一个类,则执行“ABx;”语句时将自动调用该类的()。A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数31、对于派生类的构造函数,在定义对象时构造函数的执行顺序为:()。①基对象的构造函数③派生类(BaseClass)的构造函数②成员类(DerivedClass)本身的构造函数A.③②①B.③①②C.①③②D.①②③32、如果一个类中,至少有一个纯虚函数(Purevirtualfunction),那么称该类为()。A.抽象类B.虚基类C.派生类D.以上都不对33、设置虚基类的目的是()。A.简化程序B.提高运行效率C.消除二义性D.减少目标代码34、要使语句“p=newint[5][12];”能够正常执行,p应定义为()。A.int*p;B.int**p;C.int*p[12];D.int(*p)[12];35、假定AB为一个类,则执行“ABx;”语句时将自动调用该类的()。A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数36、关于纯虚函数和抽象类的描述中,不正确的是()。A.纯虚函数有函数实体,即有函数定义B.抽象类不能创建其对象C.纯虚函数只有原型说明D.抽象类是含有纯虚函数的类37、当派生类中有内嵌(即组合)对象时,派生类构造函数的执行顺序是()。A.先基类,后派生类,最后内嵌(即组合)对象B.先内嵌(即组合)对象,后基类,最后派生类C.先派生类,后基类,最后内嵌(即组合)对象D.先基类,后内嵌(即组合)对象,最后派生类38、关于类和对象的描述,下列说法正确的是()。A.类的成员函数的定义和类的定义不能分开写。B.成员函数代码中,所有涉及对类的数据成员的操作都隐含了参数*this。C.静态的成员函数不可以使用对象名调用。D.一个类中可以定义多个构造函数,而且所有的构造函数都将被执行。39、类A中有唯一的一个成员函数f,且f是公有的静态或非静态成员函数,对于类A的一个对象a,执行语句a.f(100);成功,那么f的函数原型不可以是()。A.A&f(int,int=50);B.voidf(int&);C.constA*f(constint);D.Af(constint&);100是个常量40、下列对派生类的描述中,()是错误的。A.一个派生类可以作为另一个派生类的基类B.派生类至少应有一个基类;C.基类中成员的访问权限被派生类继承后都不改变D.派生类的成员除了自己定义的成员外,还包含了它的基类成员41给出以下定义:charx[]=abcdefg;chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度42、若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i10)。A.p[i]B.*(*(a+i))C.a[p-a]D.*(&a[i])43、执行以下程序段后,m的值为()。inta[2][3]={{1,2,3},{4,5,6}};intm,*p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A.15B.14C.13D.1244、函数重载的意义主要在于()。A.使用方便,提高可读性B.提高执行效率C.减少存储空间开销D.提高程序可靠性45、下列关于this指针的说法,哪个是正确的()。A.this指针一定指向常量型数据B.this指向的数据不可更改C.静态成员函数可以访问this指针D.this指针本身可作为成员函数的返回值。二、填空题1、假定一个二维数组的定义为inta[4][5],则该数组所含元素的个数为__20__。2、预处理命令在程序中都是以____#___开头的。3、执行coutchar('E'+2)endl;语句后得到的输出结果是____G____。4、面向对象系统最突出的特征是__封装____性、__继承__性和多态性。6、C++源程序经过__编译____和__链接___后生成可执行程序。先编译,然后才是链接7、使用标准的输入流cin时,两个输入项之间用______分隔。8、类中的对象成员、_________和_________的初始化只能通过初始化参数表的形式进行初始化。9、C++中不可以重载的运算符有“.”、“.*”、_________和_________。10、运算符的重载一般采用两种方式:重载为_________和_________。11、使用“int*pa=newint[10];”定义一个有10个元素的整型数组,使用__delete[]pa;______释放pa指针指向的数组。12、C++程序的内存格局通常分为四个区:__代码区______,该区用来存放类成员函数、其它函数代码;__全局数据区______,该区用来存放全局变量、静态数据、常量;_栈区______,该区用来存放局部变量、函数参数、返回数据和返回地址;__堆区______,该区是自由存储区。13、设置虚基类的目的是_________。14、类外部可以用p.a的形式访问派生类对象p的基类成员a,则a应是_________。公有继承的公有成员15、若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上_________和_________。三、判断题1、类的成员函数都应是公有的,而数据成员都应是私有的。错2、用
本文标题:C++复习题本科
链接地址:https://www.777doc.com/doc-7268567 .html