-本套试题共分11页,当前页是第1页-全国2014年4月高等教育自学考试-C++程序设计试题课程代码:04737本试卷满分100分,考试时间150分钟.考生答题注意事项:1.本卷所有试题必须在答题卡上作答。答在试卷上无效。试卷空白处和背面均可作草稿纸。2.第一部分为选择题。必须对应试卷上的题号使用28铅笔将“答题卡”的相应代码涂黑。3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。4.合理安排答题空间。超出答题区域无效。第一部分选择题一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。1.下列关于类的权限描述错误的是A.类本身的成员函数可以访问自身的任何成员B.类的对象只能访问公有成员C.普通函数可以不通过对象直接访问类的公有成员D.一个类可以包含另一个类的对象作为成员2.只能在自身类和子类成员函数中被访问,无法通过对象在类外访问的成员属于A.privateB.protectedC.publicD.publish3.面向对象中的“对象”是指A.行为抽象B.数据抽象C.行为抽象和数据抽象的统一D.行为抽象和数据抽象的对立4.在类外定义成员函数时,::运算符两侧分别连接A.返回值类型函数名B.返回值类型类名C.函数名类名D.类名函数名5.设函数int&index(int*a,inti)返回数组a中下标为i的元素,如存在整型数组intArray[]={1,2,3},在执行index(Array,2)++后,Array中各元素值为A.{0,1,2}B.{l,1,2}C.{1,2,4}D.{0,2,3}6.类构造函数定义的位置是A.类体内或体外B.只是在类体内C.只在类体外D.在类的成员函数中7.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置-本套试题共分11页,当前页是第2页-A.reverse(a,a+Len,Value);B.sort(a,a+Len,Value);C.find(a,a+Len,Value);D.copy(a,a+Len,Value);8.关于对象的性质,下列描述错误的是:A.同一类对象间可相互赋值B.可以使用对象数组C.对象不可以用作函数参数D.一个对象可以用作另一个类的成员9.声明一个没有初始化参数的对象,需调用A.指定参数构造函数B.拷贝构造函数C.初始化函数D.默认构造函数10.下列运算符不能重载的是A.!B.sizeofC.newD.delete11.如P是一指针类型表达式,则下列表达式中不是左值表达式的是A.PB.*PC.&PD.P+112.使用下列流格式控制符能输出一个换行符的是A.decB.octC.hexD.endl13.下列表达式,能将P声明为常量指针的是A.constint*P;B.int*constP;C.constint*constPD.int*P14.C++程序文件扩展名为A..cppB..hC..libD..obj15.对C++中主函数描述正确的是A.名称为main,可为多个B.名称不限,可为多个C.名称为main,必须有且只能有一个D.名称不限,必须有且只能有一个16.假定有char*P=Hello;,要输出这个字符串的地址值的正确写法是A.cout*PB.coutPC.cout&PD.cout(void*)P17.下列描述错误的是A.在没创建对象前,静态成员不存在B.静态成员是类的成员,不是对象成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员18.对于友元描述正确的是-本套试题共分11页,当前页是第3页-A.友元是本类的成员函数B.友元不是本类的成员函数C.友元不是函数D.以上皆不正确19.一个函数功能不太复杂,但要求频繁使用,则该函数适合作为A.内联函数B.重载函数C.递归函数D.嵌套函数20.下列默认参数的声明不正确的是A.intmax(inta,intb,intc,intd=0);B.intmax(inta,intb,intc=0,intd=0);C.intmax(inta=0,intb,intc=0,intd=0);D.intmax(inta,intb=0,intc=0,intd=0);非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。二、填空题(本大题共20小题,每小题1分,共20分)21.C++程序的编译是以______为单位进行的。22.默认参数是在______中说明的,默认参数可以多于一个。23.通过C++语言中的______机制,可以从现存类中构建其子类。24.拷贝构造函数使用______作为参数初始化创建中的对象。25.基类的公有成员在通过公有派生得到的子类中访问权限是______。26.要关闭一个输出流对象myFile,所用的C++语句是______。27.执行下列代码:doublepi=3.1415926;coutsetprecision(5)pi;程序的输出结果是______。28.对象作为函数参数,就是将实参对象的______传递给形参对象,这种传递是单向的。29.建立一个对象时,对象的状态是不确定的。为了使对象的状态确定,必须对其进行正确的______。30.C++类中的______函数在对象的生存期结束时被自动调用。31.C++语言中的整数常量有四种:十进制常量、长整型常量、八进制常量和______。32.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为______。33.声明一个常成员函数Fun,返回类型为char,第一个参数类型为int,第二个参数类型为double,则该函数的声明原型是______。34.在C++语言中,利用向量类模板定义一个具有20个int类型且初值为1的向量C,实现此操作的语句是______。35.执行下列代码:inta=123,b=321;coutsetw(3)abendl;程序输出结果是:______。36.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的______。37.vector类中用于返回向量中第一个对象的方法是______。38.C++语言中动态分配内存的关键字是______。39.C++类成员的访问权限有______、公有和保护三种。-本套试题共分11页,当前页是第4页-40.写出声明一个复数对象num的语句,并使对象被初始化为单精度2.2+1.3i,此声明语句是______。三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请在答题纸上写出错误所在行并给出修改意见41.#includeiostream.hmain(){intx=5,y=6;constint*p=&x;*p=y;cout*pendl;}42.#includeiostream.hclassf{private:Tx,y;public:f1(Ta,Tb){x=a;y=b;}Tmax(){return(xy)?x:y;}};main(){fa;a.f1(1.5,3.8);couta.max()endl;}43.#includeiostream.hclasspoint{private:floatx,y;public:point(floata,floatb){x=a;y=b;}f(){x=0;y=0;}voidgetx(){coutxendl;}voidgety(){coutyendl;}};main(){pointa(3.5);a.getx();}44.#includeiostream.hclassf{private:floatx,y;floatget(){returnx+y;}public:f1(floata,floatb){x=a;y=b;}-本套试题共分11页,当前页是第5页-};main(){fa;a.f1(1,3.8);couta.get()endl;}45.#includeiostream.hclasstestl{private:Intx;public:testl(){x=2;}voidset(inta){x=a;}voidget(){coutxendl;}};classtest2{private:intx;public:test2(){x=3;}voidset(inta){x=a;}voidget(){coutxendl;}};classtest:publictestl,publictest2.{private:intx;public:voidset(inta){x=a;}voidgettest(){coutxendl;}};main(){testa;a.get();}四、完成程序题(本大题共5小题,每小题4分,共20分)46.完成下面类中的成员函数的定义。classpoint{private:intm,n;public:point(int,int);point(point&);};point::point(inta,intb)-本套试题共分11页,当前页是第6页-{m=a;_____=b;}point::point(______){m=t.m;n=t.n;}47.#includeiostreamusingnamespacestd;classbase{private:intx;public:base(inta){x=a;}intget(){returnx;}voidshowbase(){coutx=xendl;}};classDerived:publicbase{private:inty;public:Derived(inta,intb):base(a){y=b;}voidshowderived(){coutx=get(),y=yendl;}};voidmain(){baseb(3);Derivedd(6,7);b.showbase();d.showderived();__________________;b.showbase();__________________;b1.showbase();base*pb=&b1;’pb-showbase();-本套试题共分11页,当前页是第7页-d.showderived();b.showbase();}输出结果如下:x=3x=6,y=7x=6x=6x=6x=6,y=7x=648.#includeiostream#includefstreamusingnamespacestd;classcomplex{public:intreal:intimag;complex(intr=0,inti=0){real=r;imag=i;}};complexoperator+(__________,complex&b){intr=a.real+b.real:inti=a.imag+b.imag;return__________:}voidmain(){complexx(1,2),y(3,4),z;-本套试题共分11页,当前页是第8页-z=x+y;coutz.real+z.imagiendl;}49.下面程序的运行结果如下:Thisisline1Thisisline2Thisisline3将下列程序补充完整,答案写在答题纸上。源程序如下:#includeiostream#include______usingnamespacestd;voidmain(){fstreamfin,fout;fout.open(my.txt,ios::out);if(!fout.is_open())return;for(inti=0;i3;i=i+1)foutThisislinei+1endl;fout.close();fin.open