面向对象程序设计C++复习资料与答案2012年5月2第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是()A、int*p=newint(10);B、int*p=newint[10]C、int*p=newint;D、int*p=newint[40](0);6、假设已经有定义:constchar*constname=”chen”;,下面的语句中正确的是:()A、name[3]=’a’;B、name=”lin”;C、name=newchar[5];D、coutname[3];7、假设已经定义:char*constname=”chen”;,下面的语句中正确的是:()A、name[3]=’q’;B、name=”lin”;C、name=newchar[5];D、name=newchar(‘q’);8、假设已经定义:constchar*name=”chen”;,下面的语句中错误的是:()A、name[3]=’q’;B、name=”lin”;C、name=newchar[5];D、name=newchar(‘q’);9、下面的类型声明中正确的是:()A、int&a[4];B、int&*p;C、int&&qD、inti,*p=&i;10、假设定义了函数模板()templateclassTTmax(Tx,Ty){return(xy)?x:y;}并定义了inti;charc;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了()A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:intx[‘a’];cinx;则编译器认为()A、说明语句intx[‘a’]错B、二个语句都错C、语句cinx错D、二个语句正确,没有语法错13、设有语句:voidf(inta[10],int&x);inty[10],*py=y,n;则对函数f的正确调用语句是()A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()3A、枚举B、类C、数组D、函数15、对于下面几个函数:(1)voidf(intx,floaty){……}(2)intf(inta,floatb){……}(3)intf(inti,intj){……}(4)floatk(intx){……}是重载函数。A、4个全部B、1和2C、2和3D、3和416、使用myFile.open(“Sales.dat”,ios::app);语句打开文件Sales.dat后,则()A、使输出追加到文件尾部B、打开一个文件进行读操作C、打开一个文件进行读和写操作D、文件以二进制方式打开,默认时为文本文件二、填空题1、面向对象的程序设计有四大特征,它们是抽象、封装、、。2、结构体类型中的数据和成员函数默认类型为。3、C++要求为每个函数建立原型,以说明函数的名称、参数的和,以及函数返回值。4、在函数说明前加关键字“inline”,则该函数被声明为函数,其引入的目的是为了消除函数调用时的开销,以提高运行速度。5、引用变量与被引用变量占有内存单元6、运算符能够用于访问当前作用域内与局部变量同名的全局变量。7、#includeiostreamusingnamespacestd;voids(inta,int&b){intt=a;a=b;b=t;}intmain(void){intx=500,y=1000;coutx’\t’y’\n’;s(x,y);coutx’\t’y’\n';return0;}程序的第一行输出为,第二行输出为。8、#includeiostreamusingnamespacestd;intmain(void){for(inta=1,b=1;a=5;a++){if(b=8)break;if(b%2==1){b+=7;continue;}b-=3;}cout”a=”a’\n’”b=”b’\n’;return0;}程序输出结果是a=,b=。9、#includeiostreamusingnamespacestd;4intx=100;intmain(void){intx=200;x+=::x;{intx=500;::x+=x;}coutx’\n’;cout::x’\n;return0;}程序的第一行输出为,第二行输出为。10、#includeiostreamusingnamespacestd;voidf(floatx=5,inty=16,charz=‘C’);intmain(){floata=1.6;intb=2;charc='D';f();f(a);f(a,b);f(a,b,c);return0;}voidf(floatx,inty,charz){cout“x=”x“y=”y“z=”zendl;}程序的第二行输出为,第三行输出为。11、以下程序的输出结果是。#includeiostreamusingnamespacestd;chara[]=“ABCDEFGHI”;char&f(int);intmain(){f(6)=‘X’;coutaendl;return0;}char&f(inti){returna[i];}12、如果C++程序中使用了:cout、strcpy,则必须在程序首部包含文件和。13、#includeiostreamusingnamespacestd;#includeiomanipintmain(){inti=7890;coutsetw(6)iendl;coutiendl;return0;}程序的第一行输出为,第二行输出为。14、#includeiostreamusingnamespacestd;intmain(){inti=100;cout.setf(ios::hex);couti”\t”;couti”\t”;cout.setf(ios::dec);couti”\n”;return0;}以上程序运行的结果是5第三章类和对象一、选择题1、()不是构造函数的特征。A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明。2、下列关于构造函数的描述中,()是正确的。A、构造函数可以设置缺省参数;B、构造函数可以被继承;C、构造函数可以对静态数据成员进行初始化;D、构造函数可以说明为虚函数;3、()是析构函数的特征。A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内;D、一个类中只能定义一个析构函数;4、定义析构函数时,应该注意()。A、其函数名与类名完全相同;B、函数返回类型是void类型;C、无形参,也不可重载;D、函数体中必须有delete语句;5、下列静态数据成员的特性中,()是错误的。A、说明静态数据成员时前边要加修饰符static;B、静态数据成员要在类体外进行初始化;C、静态数据成员不是所有对象所共用的;D、引用静态数据成员时,要在其名称前加类名和作用域运算符;6、友元的作用是()。A、提高程序的运用效率;B、加强类的封装性;C、实现数据的隐藏性;D、增加成员函数的种类;7、关于成员函数特征的下列描述中,()是错误的。A、成员函数一定是内联函数;B、成员函数可以重载;C、成员函数可以设置缺省参数值;D、成员函数可以是静态的;8、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的;A、voidprint()const;B、constvoidprint();C、voidconstprint();D、voidprint(const);69、在()情况下适宜采用inline定义内联函数。A、函数体含有循环语句;B、函数体含有递归语句;C、函数代码小,频繁调用;D、函数代码多,不常调用;10、假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为()。A、3B、4C、6D、911、通常拷贝初始化构造函数的参数是()。A、某个对象名B、某个对象的成员名C、某个对象的引用名D、某个对象的指针名12、有关类的说法不正确的是()。A、类是一种用户自定义的数据类型B、只有类中的成员函数才能存取类中的私有数据C、在类中,如果不作特别说明,所有的数据均为私有类型D、在类中,如果不作特别说明,所有的成员函数均为公有类型13、在声明类时,下面说法正确的的是()。A、可以在类的声明中给数据成员赋初值B、数据成员的类型可以是registerC、public,private,protected这三种属性的成员可以按任意顺序出现D、没有用public,private,protected定义的成员是公有成员14、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,()是正确的。A、A1.p=5B、A1-p=5C、A1.*p=5D、*A1.p=515、已知:类A中一个成员函数说明如下:voidSet(A&a);其中,A&a的含义是()。A、指向类A的指针为aB、将a的地址值赋给变量SetC、a是类A的对象引用,用来作函数Set()的形参D、变量A与a按位相与作为函数Set()的参数16、下列说明中constchar*ptr;ptr应该是()。A、指向字符型常量的指针B、指向字符的常量指针C、指向字符变量的指针D、指向字符串的常量指针17、采用函数重载的目的在于:A、实现共享B、减少空间C、提高速度D、使用方便,提高可读性718、有关类和对象的说法下列不正确的是()。A、对象是类的一个实例B、任何一个对象只能属于一个具体的类C、一个类只能有一个对象D、类与对象的关系和数据类型和变量的关系相似19、有以下类的说明,请指出错误的地方()。ClassCSample{inta=2.5;ACSample();Bpublic:CSample(intval);C~CSample();D};20、在类的定义形式中,数据成员、成员函数和()组成了类定义体。A、成员的访问控制信息B、公有消息C、私有消息D、保护消息二、填空题1.通常的拷贝初始化构造函数的参数是_________________2.在C++中函数参数的传递方式有三种,分别是:__________、__________和__________。3.任何类中允许有三种访问权限的数据,这三种访问权限分别是__________、__________和__________。4.类中数据成员和成员函数的默认类型为______________5.在类内部定义的__________和__________数据不能被不属于该类的成员函数来存取,定义为__________的数据,可以在类外部进行存取。6.__________是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。7.一个类中有__________个析构函数。8.__________成员函数中不能直接引用类中说明的非静态成员。9.已知类Sample中的一个成员函数说明如下:voidSet(Sample&a);其中,Samp