您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 创业/孵化 > 2015c++试题2
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.静态成员函数没有()A.返回值B.this指针C.指针参数D.返回类型2.假定AB为一个类,则执行“ABa(2),b[3],*p[4];”语句时调用该类构造函数的次数为()A.3B.4C.5D.93.有关多态性说法不正确的是()A.C++语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态多态性4.假定一个类的构造函数为“A(inti=4,intj=0){a=i;b=j;}”,则执行“Ax(1);”语句后,x.a和x.b的值分别为()A.1和0B.1和4C.4和0D.4和15.类MyA的拷贝初始化构造函数是()A.MyA()B.MyA(MyA*)C.MyA(MyA&)D.MyA(MyA)6.在C++中,函数原型不能标识()A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能7.友元关系不能()A.提高程序的运行效率B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.继承8.实现两个相同类型数加法的函数模板的声明是()A.add(Tx,Ty)B.Tadd(x,y)C.Tadd(Tx,y)D.Tadd(Tx,Ty)9.在inta=3,int*p=&a;中,*p的值是()A.变量a的地址值B.无意义C.变量p的地址值D.310.下列不是描述类的成员函数的是()A.构造函数B.析构函数C.友元函数D.拷贝构造函数11.如果从原有类定义新类可以实现的是()A.信息隐藏B.数据封装C.继承机制D.数据抽象12.下面有关类说法不正确的是()A.一个类可以有多个构造函数B.一个类只有一个析构函数C.析构函数需要指定参数D.在一个类中可以说明具有类类型的数据成员13.在函数定义中的形参属于()A.全局变量B.局部变量C.静态变量D.寄存器变量14.下列有关重载函数的说法中正确的是()A.重载函数必须具有不同的返回值类型B.重载函数参数个数必须相同C.重载函数必须有不同的形参列表D.重载函数名可以不同15.this指针存在的目的是()A.保证基类私有成员在子类中可以被访问B.保证基类保护成员在子类中可以被访问C.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码D.保证基类公有成员在子类中可以被访问16.关于new运算符的下列描述中,错误的是()A.它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算符delete删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值17.已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,正确的是()A.A1.p=5;B.A1-p=5;C.A1.*p=5;D.*A1.p=5;18.以下基类中的成员函数表示纯虚函数的是()A.virtualvoidtt()=0B.voidtt(int)=0C.virtualvoidtt(int)D.virtualvoidtt(int){}19.C++类体系中,不能被派生类继承的有()A.常成员函数B.构造函数C.虚函数D.静态成员函数20.静态成员函数不能说明为()A.整型函数B.浮点函数C.虚函数D.字符型函数二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。1.假设inta=1,b=2;则表达式(++a/b)*b--的值为___。2.抽象类中至少要有一个___函数。3.一个抽象类的派生类可以实例化的必要条件是实现了所有的___。4.下面程序的输出结果为___。#includeiostream.hvoidmain(){intnum=2,i=6;do{i--;num++;}while(--i);coutnumendl;}5.静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是___。6.在用C++进行程序设计时,最好用___代替malloc。7.由const修饰的对象称为___。8.在C++程序设计中,建立继承关系倒挂的树应使用___继承。9.基类的公有成员在派生类中的访问权限由___决定。10.不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为___。11.this指针始终指向调用成员函数的___。12.预处理命令以___符号开头。13.类模板用来表达具有___的模板类对象集。14.C++程序的源文件扩展名为___。15.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___的头文件。16.vector类中向向量尾部插入一个对象的方法是___。17.C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取___方式。18.语句序列ifstreaminfile;infile.open(“data.dat”);的功能可用一个语句实现,这个语句是___。19.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句___。20.在编译指令中,宏定义使用___指令。三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。1.#includeiostream#includefstream#includestringusingnamespacestd;classA{public:A(constchar*na){strcpy(name,na);}private:charname[80];};classB:publicA{public:B(constchar*nm):A(nm){}voidshow();};voidB::show(){coutname:nameendl;}voidmain(){Bb1(B);b1.show();}2.#includeiostream.hvoidf(int*a,intn){inti=0,j=0;intk=0;for(;in/2;i++){k=a[i];a[i]=a[n-i-1];a[n-i-1]=k;}}voidshow(inta[],intn){for(inti=0;in;i++)couta[i];coutendl;}voidmain(){intp[5];inti=0,n=5;for(;i5;i++){p[i]=i;}f(*p,n);show(p,n);3.#includeiostream.hvoidmain(){inti(3),j(8);int*constp=&i;cout*pendl;p=&j;cout*pendl;}4.#includeiostream.hvoidmain(){inti,*p;i=10;*p=i;cout*pendl;}5.#includeiostream.hclassA{private:intx,y;public:voidfun(inti,intj){x=i;y=j;}voidshow(){coutxyendl;}};voidmain(){Aa1;a1.fun(2);a1.show();}四、完成程序题(本大题共5小题,每小题4分,共20分)1.完成下面类中成员函数的定义。#includeiostream#includestringusingnamespacestd;classstr{private:char*st;public:str(char*a){set(a);}str&operator=(____){deletest;set(a.st);return*this;}voidshow(){coutstendl;}~str(){deletest;}voidset(char*s)//初始化st{_____strcpy(st,s);}};voidmain(){strs1(he),s2(she);s1.show(),s2.show();s2=s1;s1.show(),s2.show();}2.一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用show()函数输出num的值10。#includeiostream.hclassTest{private:staticintnum;public:Test(int);voidshow();};_________Test::Test(intn){num=n;}voidTest::show(){coutnumendl;}voidmain(){Testt(10);_________}3.下面是一个三角形三边,输出其面积C++程序,在下划线处填上正确的语句。#includeiostream.h#includemath.hvoidarea(){doublea,b,c;coutInputabc:;________if(a+bc&&a+cb&&c+ba){doublel=(a+b+c)/2;_______coutTheareais:sendl;}elsecoutErrorendl;}voidmain(){area();}4.下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:Der1called!Der2called!#includeiostream.hclassBase{public:_______________;};classDer1:publicBase{public:voiddisplay(){coutDer1called!endl;}};classDer2:publicBase{public:voiddisplay(){coutDer2called!endl;}};voidfun(______________){p-display();}voidmain(){Der1b1;Der2b2;Base*p=&b1;fun(p);p=&b2;fun(p);}5.下面程序中用来求数组和。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:s=150。#includeiostream.hclassArr{int*a,n;public:Arr():a(0),n(0){}Arr(int*aa,intnn){n=nn;a=newint[n];for(inti=0;inn;i++)*(a+i)=*(aa+i);}~Arr(){deletea;}_____________;{return*(a+i);}};voidmain(){intb[5]={10,20,30,40,50};Arra1(b,5);inti=0,s=0;_____________s+=a1.GetValue(i);couts=sendl;}五、程序分析题(本大题共4小题,每小题5分,共20分)1.给出下面程序输出结果。#includeiostream.hclassexample{inta;public:example(intb=5){a=b++;}voidprint(){a=a+1;couta;}voidprint()const{coutaendl;}};voidmain(){examplex;constexampley(2);x.print();y.print();}2.给出下面程序输出结果。#includeiostream.hvoidmain(){int*p1;int**p2=&p1;intb=20;p1=&b;cout**p2endl;}3.给出下面程序输出结果。#includeiostream.hclassBase{private:int
本文标题:2015c++试题2
链接地址:https://www.777doc.com/doc-3017314 .html