大学C++复习题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C++复习题一、简答题1.在c++中,内联函数中不能使用什么语句?答:不允许使用循环语句和分支语句2.在c++中,封装可以由那几个关键字提供控制方式?分别作用是什么?答:在类定义体里,使用了private、protected、public三个关键字是用来说明数据成员和函数成员的访问权限。public说明公有成员,该类成员都可以通过对象被访问的。private说明私有成员,该类成员只能被自己的成员函数或友元访问;protected说明保护型的成员,可以被自己的成员函数或友元访问,也可以被派生类的函数成员访问;3.由于二义性原因,一个类如何防止从一个类中重复继承?答:①通过使用作用运算符“::”明确指出访问的是哪个基类中的成员;②在类中定义同名成员;③虚基类(virtual继承方式基类名)4.在c++中,如果在多条继承路径有一个公共的基类,如果想使这个公共的基类只产生一个拷贝,则如何处理这个基类?用什么关键字?答:将这个公共基类说明为虚基类,用virtual关键字5.简单成员函数是指声明中不含有什么关键字的函数?(关注存储类型)答:简单成员函数是指存储类型为auto型。static,extern,register6.静态成员的特点?答:静态成员的特点是:不管这个类创建多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。7.当访问私有静态数据成员时,可通过什么来访问?答:在类外,私有静态数据成员不能直接访问,必须通过公有的成员函数访问。8.有关继承,静态成员是否可以被继承?可以。友元是否可以被继承?不可以构造函数是否可以被继承?不可以9.c++不允许重载什么运算符?答:成员访问运算符.;作用域运算符∷;条件运算符?:;成员指针运算符*;长度运算符sizeof()10.那些运算符只能用类运算符来重载?答:=()[]*这四个只能用类重载11.c++提供格式宽度控制方式有哪几种?关键字是?答1.intwidth(intval)intwidth()intios::width(intn)2.setw(intn)????12.十进制数0.1的二进制表示是什么?答:(0.1)10=(0.000110011...)2,它是无限循环小数。也就是说,十进制数0.1无法精确用二进制表示!13.简述程序设计的步骤。答:程序设计一般遵循以下步骤:明确问题;系统设计;用某种语言进行编程;测试与调试;运行与维护14.简述编译与解释的区别。答:编译是指把高级语言程序首先翻译成功能上等价的机器语言程序或汇编语言程序,然后执行目标代码程序,在目标代码程序的执行中不再需要源程序。解释则是指对源程序中的语句进行逐条翻译并执行,翻译完了程序也就执行完了,这种翻译方式不产生目标程序。一般来说,编译执行比解释执行效率要高15.简述C++程序的编译执行过程答:编译过程主要分为4个阶段:编译预处理;编译、优化阶段;汇编过程;链接程序(?)16.下面哪一些是合法的C++字面常量,它们的类型是什么?-5.23,1e+50,-25,105,20.20,e5,1e-5,-0.0e5,'\n'-000,'A','5','3.14',falsered,'\r','\f'TodayisMonday.,\答:字面常量是指在程序中直接写出常量值的常量。-5.23,1e+50,-25,20,.20,1e-5,-0.0e5,'\n',-000,'A','5','\r','\f',TodayisMonday.,\都是字面常量。其中:整数类型常量:-25,20,-000实数类型常量:-5.23,1e+50,.20,1e-5,-0.0e5字符常量:'\n','A','5','\r','\f'字符串常量:TodayisMonday.,\17.什么是符号常量?符号常量的优点是什么?答:符号常量是指有名字的常量,在程序中通过常量的名字来使用这些常量。程序中使用符号常量有以下优点:(1)增加程序易读性;(2)提高程序对常量使用的一致性;(3)增强程序的易维护性18.如何理解变量?变量定义和声明的作用是什么答:值可以改变的量叫变量,可变的数据.使用变量前,C++要对变量做声明19.指针类型主要用于什么场合?引用类型与指针类型相比,其优势在哪里?答:指针类型主要用于参数传递和对动态变量的访问。在C++中,指针类型还用于访问数组元素,以提高访问效率。引用类型与指针类型都可以实现通过一个变量访问另一个变量,但访问的语法形式不同:引用是采用直接访问形式,指针则采用间接访问形式。在作为函数参数类型时,引用类型参数的实参是一个变量,而指针类型参数的实参是一个变量的地址。除了在定义时指定的被引用变量外,引用类型变量不能再引用其他变量;而指针变量定义后可以指向其他同类型的变量。因此,引用类型比指针类型要安全。20.constint*p1和int*constp2的区别是什么?答:constint*p1是指向常量的指针,指针指向一个常量,无需初始化,指针本身可以改变,但是指针指向的值不能改变。int*constp2是指向常量的引用,使用时必须初始化,而且初始化后,引用值不可以改变,引用的常量也不能改变。21.表达式中的类型转换规则是什么?下面的表达式计算时如何进行操作数类型转换?(1)3/5*12.3(2)'a'+10*5.2(3)12U+3.0F*24L表达式中类型转换规则是:基于单个操作符依次进行转换。1)3与5同类型,不转换,结果为0,转换成double型后与12.3做乘法。2)10转换成double型与5.2做乘法,’a’转换成double型后与前者结果做加法。22.将下列公式表示成C++的表达式:(1)aacbb242(可利用C++标准库中的求平方根的函数:sqrt(x))(-1*b+sqrt(b*b-4*a*c))/(2*a)(2)))()((csbsass:sqrt(s*(s-a)*(s-b)*(s-c))(3)345.2133rcbdcba((a*b)/(c*d))*(3/(1+(b/(2.5+c))))+(4*pi*r*r*r/3)23.派生类构造函数执行的次序是怎样的?答:派生类构造函数执行的一般次序为:调用基类构造函数;调用成员对象的构造函数;派生类的构造函数体中的内容。24.如果在派生类B已经重载了基类A的什么叫做多态性?在C++中是如何实现多态的?答:多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。C++支持的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式。25.一个成员函数fn1(),没有重载成员函数fn2(),如何调用基类的成员函数fn1()、fn2()?答:A::fn1();fn2();26.如果类A是类B的友元,类B是类C的友元,类D是类A的派生类,那么类B是类A的友元吗?类C是类A的友元吗?类D是类B的友元吗?答:类B不是类A的友元,类C不是类A的友元,类D不是类B的友元二、选择题1.下列的各类函数中,C不是类的成员函数。A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数2.作用域运算符“::”的功能是D。A)标识作用域的级别的B)指出作用域的范围的C)给定作用域的大小的D)标识成员是属于哪个类的3.A是析构函数的特征。A)一个类中只能定义一个析构函数B)析构函数名与类名不同C)析构函数的定义只能在类体内D)析构函数可以有一个或多个参数4下述静态数据成员的特性中,D是错误的。A)说明静态数据成员时前边要加修饰符staticB)静态数据成员要在类体外进行初始化C)引用静态数据成员时,要在静态数据成员前加类名和作用域运算符D)静态数据成员不是所有对象所共用的5.友元关系不能CA)是类是与类的关系B)是一个类成员函数与另一个类的关系C)继承D)提高程序的运行效率6.下列关于对象数组的描述中,D是错的。A)对象数组的下标是从0开始的B)对象数组的数组名是一个常量指针C)对象数组的每个元素是同一个类的对象D)对象数组只能赋初值,而不能被赋值7.下列说明中constchar*ptr;ptr应该是CA)指向字符常量的指针B)指向字符的常量指针C)指向字符串常量的指针D)指向字符串的常量指针8.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,A是正确的。A)voidprint()const;B)constvoidprint();C)voidconstprint():D)voidprint(const);9.关于new运算符的下列描述中,D是错的。A)它可以用来动态创建对象和对象数组B)使用它创建的对象或对象数组可以使用运算符delete删除C)使用它创建对象时要调用构造函数D)使用它创建对象数组时必须指定初始值10.下列对派生类的描述中,D是错的A)一个派生类可以作另一派生类的基类B)派生类至少有一个基类C)派生类的成员除了它自己的成员外,还包含了它的基类的成员D)派生类中继承的基类成员的访问权限到派生类中保持不变11.派生类的构造函数的成员初始化列表中,不能包含DA)基类的构造函数B)派生类中子对象的初始化C)派生类中一般数据成员的初始化D)基类的子对象初始化12.设置虚基类的目的是BA)简化程序B)消除二义性C)提高运行效率D)减少目标代码13.下列函数中,C不能重载A)成员函数B)非成员函数C)析构函数D)构造函数注:重载函数:同名不同参(个数、类型、顺序)14.关于动态联编的下列描述中D是错误的A)动态联编是以虚函数为基础的B)动态联编是在运行时确定所调用的函数代码的C)动态联编调用函数操作是指向对象的指针或对象引用D)动态联编是在编译时确定操作函数的15.关于虚函数的描述中,D是正确的A)虚函数是一个static类型的成员函数B)虚函数是一个非成员函数C)基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数D)派生类的虚函数与基类的虚函数具有不同的参数个数和类型16.下列描述中,D是抽象类的特性A)可以说明虚函数B)可以进行构造函数重载C)可以定义友元函数D)不能说明其对象17.在类定义的外部,可以被访问的成员有CA)所有类成员B)private的类成员C)public的类成员D)public或private的类成员18.下面对构造函数的不正确描述是BA)系统可以提供默认的构造函数B)构造函数可以有参数,所以可以有返回值没有C)构造函数可以重载D)构造函数可以设置默认参数19.在创建派生类对象时,构造函数的执行顺序是DA)对象成员构造函数、基类构造函数、派生类本身的构造函数B)派生类本身的构造函数、基类构造函数、对象成员构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)基类构造函数、对象成员构造函数、派生类本身的构造函数20.在C++中,要实现动态联编,必须使用D调用虚函数A)类名B)派生类指针C)对象名D)基类指针三、运行结果1.在你的计算机上运行下面的程序:#includeiostreamusingnamespacestd;intmain(){doublea=3.3,b=1.1;inti=a/b;coutiendl;return0;}结果与你预期的是否相符?如果不符,请解释它的原因结果为2。小数3.3和1.1无法用double型精确表示。结果比3.0小,所以转换成int型后为22.写出下面程序的执行结果:#includeiostreamusingnamespacestd;intcount=0;intfib(intn){count++;if(n==1||n==2)return1;elsereturnfib(n-1)+fib(n-2);}intmain(){coutfib(8);cout','countendl;return0;}递归。。。。结果:21,413.#includeiostream.hclassCPoint{public:CPoint(){X=Y=0;cout

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功