您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++期末考试复习题
C++期末考试复习题一、选择题1.在声明类时,下面的说法正确的是(C)。A.可以在类的声明中给数据成员赋初值B.数据成员的数据类型可以是registerC.private、public、protected可以按任意顺序出现D.没有用private、public、protected定义的数据成员是公有成员2.在一个类的定义中,包含有(C)成员的定义。A.数据B.函数C.数据和函数D.数据或函数3.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。A.intAA::a()B.intAA:a()C.AA::a()D.AA::inta()4.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(C)。A.px(a)B.px[a]C.px-aD.px.a5.下列关于运算符new的描述中,错误的是(D)。A.它可以创建对象或变量B.它可以创建对象数组或一般类型数组C.用它创建对象或对象数组时要调用相应的构造函数D.用它创建的对象可以不用delete运算符释放6.在下面有关析构函数特征的描述中,正确的是(A)。A.一个类中可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型D.析构函数可以由一个或多个参数7.构造函数是在(B)时被执行的。A.程序编译B.创建对象C.创建类D.程序装入内存8.友元的作用之一是(A)。A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类9.设置虚基类的目的是(B)。A.简化程序B.消除二义性C.提高运行效率D.减少目标代码10.回值的纯虚函数,正确的写法是(B)。A.virtualshow()=0;B.virtualvoidshow();C.virtualvoidshow()=0;D.voidshow()=0virtual;11.重载函数在调用时选择的依据中,(B)是错误的。A.函数名字B.函数的返回类型C.参数个数D.参数的类型12.已知:intfun(int&a),m=10;下列调用fum()函数的语句中,正确的是(C)。A.fun(&m);B.fun(m*2);C.fun(m);D.fun(m++);13.下列各种类中,不能定义对象的类是(B)。A.派生类B.抽象类C.嵌套类D.虚基类14.类中定义的成员默认为(A)访问属性。A.publicB.privateC.protectedD.friend15.静态成员函数对类的数据成员访问(B)。A.是不允许的B.只允许是静态数据成员C.只允许是非静态数据成员D.可允许是静态数据成员或非静态数据成员16.在下列语句中,将函数intf_sum(intx,inty)正确重载的是(A)。A.floatf_sum(intx,inty)B.intf_sum(inta,intb)C.intf_sum(intx)D.floatf_sum(inta,intb)17.下列各语句是输出字符'A'的,其中错误语句是(B)。A.cout'A';B.cout.put('A');C.charch='A';coutch;D.coutput('A');18.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D)。A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员D.具有任何权限的成员19.C++语言程序中进行文件操作时应包含的头文件是(A)。A.fstream.hB.math.hC.stdlib.hD.strstrea.h20.在C++程序中使用的cin标识符是系统类库中定义的(A)类中的一个对象。A.istreamB.ostreamC.iostreamD.fstream21.已知:charn=’p’;在下列表示引用的方法中,()是正确的。A.char&x=n;B.char&y=’p’;C.char&z;D.float&t=&n;22.在(A)情况下适宜采用内联函数。A.函数代码小,频繁调用B.函数代码多,频繁调用C.函数体含有递归语句D.函数体含有循环语句23.如果表达式a+b中的“+”是作为友元函数重载的运算符,若采用运算符函数调用格式,则可表示为()。A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.operator(a+b)24.执行完循环for(i=1;i100;i++);后,i的值为(B)。A.99B.100C.101D.10225.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为(C)。A.0B.1C.nD.n-126.在C++程序中使用的cout标识符是系统类库中定义的(B)类中的一个对象。A.istreamB.ostreamC.iostreamD.fstream二、填空题1.在下面一段类定义中,Derived类是由直接基类Base1和Base2所派生的,Derived类包含有两个间接基类BaseBase,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。classBaseBase{protected:intx;public:BaseBase(){x=1;}};classBase1:publicBaseBase{public:Base1(){}};classBase2:publicBaseBase{public:Base2(){}};classDerived:(1)publicBase1,(2)publicBase2{public:Derived(){}voidInit(intx1,intx2){(3)Base1::x=x1;_(4)__Base2::x=x2_;}(5)voidoutput(){coutBase1::x''Base2::xendl;}};2.该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。int(1)inta[]{intx=a[0];for(inti=1;in;i++)if(a[i]x)(2)a[j+i=j];(3)break;}classA{char*a;public:___(1)___//定义无参构造函数,使a的值为空A(char*aa){a=___(2)___;strcpy(a,aa);//用aa所指字符串初始化a所指向的动态存储空间}___(3)___//定义析构函数,删除a所指向的动态存储空间};classPoint{private:intx,y;public:Point(){x=y=0;}Point(intx0,inty0){x=x0;y=y0;}intGetX(){returnx;}intGetY(){returny;}voidPrint(){coutPoint(x,y)endl;}1Pointoperator+(Point&pt,intdd);//友元函数声明2;//友元函数声明};Pointoperator+(Point&pt,intdd)//加号操作符重载函数,实现Point类对象与整数加法{Pointtemp=pt;3;temp.y+=dd;returntemp;}Pointoperator+(Point&pt1,Point&pt2)//加号操作符重载函数,实现两个Point类对象的加法{Pointtemp;temp.x=pt1.x+pt2.x;4;return5;}3.下列程序的功能是,建立磁盘文件1.txt,从键盘输入一行字符串,以回车键结束,将其中的字母字符存放在文件1.txt中,请填空完成该程序。#includefstreamusingnamaspacestd;intmain(){chara[80];;//定义输出流对象outfileif(!outfile1){cerr打开文件出错!endl;exit(1);};//从键盘读入一行字符for(inti=0;c[i]!=0;i++)if()coutendl;;return0;}四、根据程序试写出运行结果1.#includeiostream.hvoidmain(){inti,j;int*p1,*p2;p1=&i;p2=&j;i=3;j=6;couti=ij=jendl;cout*p1=*p1*p2=*p2endl;*p1=5;*p2=8;couti=ij=jendl;cout*p1=*p1*p2=*p2endl;}2.#includeiostream.h#includestring.hclassCD{char*a;intb;public:voidInit(char*aa,intbb){a=newchar[strlen(aa)+1];strcpy(a,aa);b=bb;}char*Geta(){returna;}intGetb(){returnb;}voidOutput(){couta''bendl;}};voidmain(){CDdx,dy;chara[20];dx.Init(abcdef,30);strcpy(a,dx.Geta());strcat(a,xyz);dy.Init(a,dx.Getb()+20);dx.Output();dy.Output();}3.#includeiostream.hclassA{inta[10];intn;public:A(intaa[],intnn):n(nn){for(inti=0;in;i++)a[i]=aa[i];}intGet(inti){returna[i];}intSumA(intn){ints=0;for(intj=0;jn;j++)s+=a[j];returns;}};voidmain(){inta[]={2,5,8,10,15,20};Ax(a,4);Ay(a,6);intd=1;for(inti=0;i4;i++)d*=x.Get(i);intf=y.SumA(5);coutd=dendl;coutf=fendl;}4.#includeiostream.hclasscircle{protected:intr;public:voidsetr(intx){r=x;}virtualvoidshow()=0;};classarea:publiccircle{public:voidshow(){cout这个圆的面积是:3.14*r*rendl;}};classperimeter:publiccircle{public:voidshow(){cout这个圆的周长是:2*3.14*rendl;}};voidmain(){circle*ptr;areaob1;perimeterob2;ob1.setr(10);ob2.setr(10);ptr=&ob1;ptr-show();ptr=&ob2;ptr-show();}5.#includeiostream.hclassA{public:A(){coutA;}};classB{public:B(){coutB;}};classC:publicA{public:C(){coutC;}private:Bb;};intmain(){Cobj;return0;}6.#includeiostream.hclasssmall_cat{doubleweight;//普通数据成员,表示一只小猫的重量staticdoubletotal_weight;//静态数据成员,用来累计小猫的重量staticdoubletotal_number;//静态数据成员,用来累计小猫的只数public:small_cat(doublew)//构造函数{weight=w;total_w
本文标题:C++期末考试复习题
链接地址:https://www.777doc.com/doc-1500544 .html