C++复习试题答案.docx
- 文档编号:11806719
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:38
- 大小:31.88KB
C++复习试题答案.docx
《C++复习试题答案.docx》由会员分享,可在线阅读,更多相关《C++复习试题答案.docx(38页珍藏版)》请在冰豆网上搜索。
C++复习试题答案
语法扩充
选择题
在C++中用(D)能够实现将参数值带回。
a)数组b)指针c)引用d)上述ABC都可
考虑函数原型voidtest(inta,intb=7,char*ch="*"),下面的函数调用中,属于不合法调用的是:
(C)
A)test(5)B)test(5,8)C)test(6,"#")D)test(0,0,"*");
已知:
intm=10;下列表示引用的方法中,正确的是:
(C)
A)int&Z;B)int&t=10;C)int&X=m;D)float&f=&m;
下列不是函数重载所要求的条件是:
(D)
A)函数名相同B)参数个数不同
C)参数类型不同D)函数返回值类型不同
在C++中执行以下4条语句后输出rad值为:
(C)
staticinthot=200;
int&rad=hot;
hot=hot+100;
cout< A)0B)100C)300D)200 系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是: (D) A)参数个数B)参数类型C)函数名称D)函数的返回值类型 对C++语言和C语言的兼容性,描述正确的是: (A) A)C++兼容CB)C++部分兼容CC)C++不兼容CD)C兼容C++ 在C++中使用流进行输入输出,其中用于屏幕输出的对象是: (C) A)cerrB)cinC)coutD)cfile 对使用关键字new所开辟的动态存储空间,释放时必须使用(C) A)freeB)createC)deleteD)realse 在函数调用时,如某一默认参数要指明一个特定值,则有(A)没有被赋值的参数放在最后。 A)其之前所有参数都必须赋值B)其之后所有参数都必须赋值 C)其前、后所有参数都必须赋值D)其前、后所有参数都不必赋值 下列哪个类型函数不适合声明为内联函数(A)一般用于代码较短的函数 A)函数体语句较多B)函数体语句较少 C)函数执行时间较短D)函数执行时间过长 intFunc(int,int);不可与下列哪个函数构成重载(B) A)intFunc(int,int,int);B)doubleFunc(int,int); C)doubleFunc(double,double);D)doubleFunc(int,double); 下面的哪个保留字不能作为函数的返回类型(C) A)voidB)intC)newD)long 一个函数功能不太复杂,但要求被频繁调用,选用(A)。 A.内联函数B.重载函数C.递归函数D.嵌套函数 已知函数f的原型为: voidf(int&a,char*b);变量s,t的定义是: ints;chart[]="ABCD"; 把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是(C) Af(&s,&t);Bf(&s,t);Cf(s,t);Df(s,&t); 若定义cin>>str; 当输入 MicrosoftVisualStudio! 所得结果是str=(B)。 A、MicrosoftVisualStudio! B、Microsoft C、MicrosoftVisual D、MicrosoftVisualStudio .函数模板(C)。 A、代表某一具体函数 B、与模板函数是同一个函数 C、与某一个具体的数据类型连用 D、是模板函数实例化的结果 在C++中,关于下列设置参数默认值的描述中,正确的是(C) A、不允许设置参数的默认值 B、设置参数默认值只能在定义函数时设置 C、设置参数默认值时,应该是先设置右边的再设置左边的 D、设置参数默认值时,应该全部参数都设置 下列表示引用的方法中,(A)是正确的。 已知: k=1000; A、int&x=k;B、char&y; C、int&z=1000;D、float&t=&k; 有如下模板定义: template 在下列对fun的调用中,错误的是: (C) A)fun(2,8)B)fun,C)fun,8)D)fun(‘2’,’8’) 通常情况下,函数模板中的类型参数个数不能是(A) A)0个B)1个C)2个D)3个 填空题 1、假定有如下定义: intx;,若要将整型变量y定义为变量x的引用,则应使用的定义语句是_int&y=x;________。 具有相同函数名但具有不同参数表的函数称为重载函数。 ' 2、在进行函数调用时,将把参数的值传递给值参数,把参数的_地址_传递给引用参数。 3、执行完下列三条语句后,指针变量c指向__b___。 Inta,b,*c=&a; int*&p=c; p=&b; 4、假设有如下函数定义: voidFun(intx,inty=100);则语旬Fun(5)语句__Fun(5,100)_等价。 5、在一个C++程序中,每个变量都必须遵循__先定义后使用__的原则。 6、下面是一个求数组元素之和的程序。 主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。 函数TotalSum计算数组元素之和。 请完成下列程序。 #include<> __intTotalsum(intarray[],intlen)__; voidmain() { inta[5]={2,3,6,8,10}; __intTotal___; Total=Totalsum(a,5); cout<<"Sumofarray: "< } intTotalsum(intarray[],intlen) { ____intsum=0____; for(intI=0;____I ____sum+=array[I]_____; returnsum; } 7、下面的函数Fun未使用中间变量实现了对两个数的交换,请完成下列函数的定义。 VoidFun(int&x,int&y) { x+=y; y=___x-y____; __x=x-y_____; } 8、定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声明为__常量__,即在该形参声明的前面加上__const__关键字进行修饰。 9、在一个函数的定义或声明前加上关键字__inline__时,该函数就声明为内联函数。 简答题 A、.内联函数的含义 在函数前加上关键字inline说明了一个内联函数,这使一个函数在程序行里进行代码扩展而不被调用。 这样的好处是减少了函数调用的开销,产生较快的执行速度。 (缺点)但是由于重复编码会产生较长代码,所以内联函数通常都非常小。 如果一个函数在类说明中定义,则将自动转换成内联函数而无需用inline说明。 B、.函数重载的含义 在同一作用域范围内,相同的函数名通过不同的参数类型或参数个数可以定义几个函数,编译时编译器能够识别实参的个数和类型来决定该调用哪个具体函数。 需要注意的是,如果两个函数仅仅返回类型不同,则编译时将会出错,因为返回类型不足以提供足够的信息以使编译程序判断该使用哪个函数。 所以函数重载时必须是参数类型或者数量不同。 C、引用与指针的区别 D、内联函数使用上的限制 E、定义带默认参数值函数的规则 F、指针与常量的关系 程序阅读题 1)写出下列程序的运行结果。 #include<> voidmain() { intx; int&p=x; x=10; p=x+10; cout< } 结果: 20,20 2)写出下列程序的运行结果。 #include<> intf(inta) { return++a; } intg(int&a) { return++a; } voidmain() { intm=0,n=0; m+=f(g(m)); n+=f(f(n)); cout<<"m="< cout<<"n="< } 结果: m=3 n=2 3)写出下列程序的运行结果。 #include<> voidFun() { intnum=20; cout<<"TheFun'snumis"< } voidmain() { intnum=10; cout<<"Themain'snumis"< Fun(); { intnum=30; cout<<"TheField'snumis"< } cout<<"Themain'snumis"< } 结果: Themain'snumis10 TheFun'snumis20 TheField'snumis30 Themain'snumis10 类和对象 选择题 下列的各类函数中,不是类的成员函数。 (C) 友元函数不是一个类的成员函数,但可以像成员函数一样访问该类的所有成员,包括么有成员和保护成员,这种函数称为友元函数。 (friendfunction) A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数 作用域运算符“: : ”的功能是: (B) A)标识作用域的级别的B)指出作用域的范围的 C)给定作用域的大小的D)标识成员是属于哪个类的 已知: print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。 (A) A)voidprint()const;B)constvoidprint(); C)voidconstprint(): D)voidprint(const); 在类定义的外部,可以被访问的成员有(C) A)所有类成员B)private的类成员 C)public的类成员D)public或private的类成员 关于类和对象不正确的说法是: (C) A)类是一种类型,它封装了数据和操作B)对象是类的实例 C)一个类的对象只有一个D)一个对象必属于某个类 在C++中实现封装是借助于(B) A)枚举B)类C)数组D)函数 定义析构函数时,应该注意: (C) A)其名与类名完全相同B)返回类型是void类型 C)无形参,也不可重载D)函数体中必须有delete语句 构造函数和析构函数不能有任何的返回值,包括void类型;析构函数不能有参数。 (特殊的成员函数,不需要用户程序调用,就能在创建时由系统自动地调用。 类claseCC1的说明如下,错误的语句是: (A) claseCC1{ inta=2;于类模板的说法正确的是: (B) A)类模板的主要作用是生成抽象类 B)类模板实例化时,编译器将根据给出的模板实参生成一个类 类模版是对类的抽象,类模版称为带参数(或参数化)的类,也称为类工厂,它可以用来生成多个成员相同而某些数据成员、成员函数的参数及返回值的数据类型不同的类。 定义类模版时必须将某些数据类型作为类模版的类型号参数。 C)在类模板中的数据成员具有同样类型 D)类模板中的成员函数没有返回值 .以下关键字不能用来声明类的访问权限的是: (C) A)publicB)privateC)staticD)protected .类的私有成员可在何处访问(D) A)通过子类的对象访问B)本类及子类的成员函数中 C)通过该类对象访问D)本类的成员函数中 .如果没有为一个类定义任何构造函数的情况下,下列描述正确的是: (A) A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数 C)这个类不需要构造函数D)该类不能通过编译 .一个类可包含析构函数的个数是: (B) A)0个B)1个C)0个或1个D)0个或多个 .一个类可包含构造函数的个数是: (D) A)0个B)0个或1个C)0个或多个D)1个或多个 .this指针存在的目的是: (B) A)保证基类公有成员在子类中可以被访问 B)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码 在一个成员函数中经常需要调用其他函数(非本类的成员函数),而有时需要把当前对象(即对象的地址)作为参数传递给被调用函数,这时必须使用this指针。 C)保证基类保护成员在子类中可以被访问 D)保证基类私有成员在子类中可以被访问 .下列关于类的权限的描述错误的是: (A) A)类本身的成员函数只能访问自身的私有成员 B)类的对象只能访问该类的公有成员 C)普通函数不能直接访问类的公有成员,必须通过对象访问 D)一个类可以将另一个类的对象作为成员 .设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是: (B) A)A类构造函数先执行B)成员构造函数先执行 C)两者并行执行D)不能确定 .假定有类AB,有相应的构造函数定义,能正确执行“ABa(4),b(5),c[3],*p[2]={&a,&b};”语句,请问执行完此语句后共调用该类构造函数的次数为(C) A)3B)4C)5D)6 拷贝构造函数的作用是(C)。 A.进行数据类型的转换B.用对象调用成员函数 C.用对象初始化对象D.用一般类型的数据初始化对象 下列静态数据成员的特性中,错误的是(D)。 A.静态数据成员的声明以关键字static开头 B.静态数据成员必须在文件作用域内初始化 C.引导数据成员时,要在静态数据成员前加(类名)和作用域运算符 D.静态数据成员不是类所有对象共享的 通过指针访问类对象成员的方法是(D)。 A.: : B.;C..D.-> 静态成员函数没有(B)。 A.返回值B.this指针C.指针参数D.返回类型 在下列关键字中,用于说明类中公有成员的是(A)。 A.public;B.private;C.protected;D.friend 不是构造函数的特征(D)。 A.构造函数的函数名与类名相同;B.构造函数可以重载; C.构造函数可以设置缺省参数;D.构造函数必须指定类型说明。 是析构函数的特征(A)。 A.一个类中只能定义一个析构函数;B.析构函数名与类名不同; C.析构函数的定义只能在类体内;D.析构函数可以有一个或多个参数。 (一个) 关于成员函数特征的下述描述中,(A)是错误的。 A.成员函数一定是内联函数;B.成员函数可以重载; C.成员函数可以设置参数的缺省值;D.成员函数可以是静态的。 下述静态数据成员的特性中,(D)是错误的。 A.说明静态数据成员时前边要加修饰符static; B.静态数据成员要在类体外进行初始化; C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符; D.静态数据成员不是所有对象所共用的。 填空题 1、在撤销类的对象时,C++程序将自动调用该对象的__析构___函数。 2、类中的构造函数是一个特殊的成员函数,它由类的对象__自动_调用,它的作用是___为对象分配内存,数据成员初始化___。 3、对类中的成员函数和属性的访问是通过__public__、__protected__和___private__这3个关键字来控制的。 4、__delete__运算符删除new运算符所动态分配的内存空间。 5、假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为__MyClass()__。 6、类中构造函数有__一个或多__个,析构函数有___一___个。 7、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的___数据成员___,共同行为被描述为类中的__成员函数__。 8、若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_friendclassFriendClass;___。 9、在结构定义中,数据和成员函数默认权限是__public__。 在类定义中,数据和成员函数默认权限是__private___。 10、在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。 #include<> classMyClass { pub1ic: ___MyClass(inta){_x=a;}____C++中,类与类之间的继承关系具有(C) A)自反性B)对称性C)传递性D)反对称性 .在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(B) A)受限制B)保持不变C)受保护D)不受保护 .按解释中的要求在下列程序划线处填入的正确语句是: (C) #include<> classBase{ public: voidfun(){cout<<"Base: : fun"< }; classDerived: publicBase{ public: voidfun() {保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(C) A)受限制B)保持不变C)受保护D)不受保护 .下面描述中,表达错误的是: (B) A)公有继承时,基类中的public成员在派生类中仍是public的 B)公有继承时,基类中的private成员在派生类中仍是private的 C)公有继承时,基类中的protected成员在派生类中仍是protected的 D)私有继承时,基类中的public成员在派生类中是private的 .下列虚基类的声明中,正确的是: (B) A)classvirtualB: publicAB)classB: virtualpublicA C)classB: publicAvirtualD)virtualclassB: publicA .C++设置虚基类的目的是(A) A)消除二义性B)简化程序C)提高运行效率D)减少目标代码 classX{ inta; public: X(intx=0){a=x;} }; classY: publicX{ intb; public: Y(intx=0,inty=0): X(y)){b=x;} }; 下列语句组中出现语法错误的是(D) A.X*pa=newY(1,2); a1=Y(1,3); b1(2,3);X&a3=b1; a4(10);Yb2=a4; classBase {public: inti; Base(intt): i(t){} }; classDerived: protectedBase {Baseb; intj; public: Derived(intt); }; 在构造函数Derived的下列定义中,正确的是(B) A.Derived: : Derived(intt): b(t),j(t){} B.Derived: : Derived(intt): b(t),Base(t),j(t){} C.Derived: : Derived(intt): Base(t),j(t){} D.Derived: : Derived(intt): i(t),b(t),j(t){} .在哪种派生方式中,派生类可以访问基类中的protected成员(B) A)public和privateB)public、protected和private C)protected和privateD)仅protected 在C++中,类与类之间的继承关系具有(C) A)自反性B)对称性C)传递性D)反对称性 下列关于类的继承描述中,(A)是错误的 A)派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数 B)派生类也是基类,但基类不一定具有派生类的全部属性和方法 C)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法 D)一个基类可以有多个派生类,一个派生类可以有多个基类 .当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C) A)public成员B)private成员C)protected成员D)友元 当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的(B) A)public成员B)private成员C)protected成员D)友元 不论派生类以何种方法继承基类,都不能使用基类的(B) A)public成员B)private成员C)protected成员D)public成员和protected成员 在创建派生类对象时,构造函数的执行顺序是(D) A)对象成员构造函数、基类构造函数、派生类本身的构造函数 B)派生类本身的构造函数、基类构造函数、对象成员构造函数 C)基类构造函数、派生类本身的构造函数、对象成员构造函数 D)基类构造函数、对象成员构造函数、派生类本身的构造函数 下列虚基类的声明中,正确的是(D)。 A)classvirtualB: publicA B)virtualclassB: publicA C)classB: publicAvirtual D)classB: virtualpublicA 下面叙述错误的是(A)。 A)基类的protected成员在派生类中仍然是protected的 B)基类的protected成员在public派生类中仍然是protected的 C)基类的protected成员在private派生类中是private的 D)基类的protected成员不能被派生类的对象访问 下列说法中错误的是(A)。 A)保护继承时基类中的public成员在派生类中仍是public的 B)公有继承时基类中的private成员在派生类中仍是private的 C)私有继承时基类中的public成员在派生类中是private的 D)保护继承时基类中的public成员在派生类中是protected的 关于多继承二义性的描述中,错误的是(B)。 A)一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性 B)解决二义性的最常用的方法是对成员名的限定法 C)基类和派生类中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习 试题答案
![提示](https://static.bdocx.com/images/bang_tan.gif)