08年到14年c真题

08年到14年c真题

ID:83045022

大小:270.69 KB

页数:121页

时间:2023-09-20

上传者:无敌小子
08年到14年c真题_第1页
08年到14年c真题_第2页
08年到14年c真题_第3页
08年到14年c真题_第4页
08年到14年c真题_第5页
08年到14年c真题_第6页
08年到14年c真题_第7页
08年到14年c真题_第8页
08年到14年c真题_第9页
08年到14年c真题_第10页
资源描述:

《08年到14年c真题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

全国2008年10月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,毎小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.对C卄语言和C语言的兼容性,描述正确的是()A.C++兼容CB.C++部分兼容CC.C++不兼容CD.C兼容C++2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是()A.cerrB.cinC.coutD.cfile3.对使用关键字new所开辟的动态存储空间,释放时必须使用()A.freeB.createC.deleteD.realse4.如没有使用private关键字定义类的数据成员,则默认为()A.privateB.publicC.protectedD.friend5.使用值传递方式将实参传给形参,下列说法正确的是()A,形参是实参的备份B.实参是形参的备份C.形参和实参是同一对象D,形参和实参无联系6.在函数调用时,如某ー默认参数要指明一个特定值,则有()A・其之前所有参数都必须赋值B.其之后所有参数都必须赋值C.其前、后所有参数都必须赋值D.其前、后所有参数都不必赋值7.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,ド列表达式不正确的是()A.intm=max(22,max(59,70));B.intm=max(max(22,59),70);C.intm=max(22,59,70);D.intm=max(59,max(22,70));8.下列哪个类型函数不适合声明为内联函数()A,函数体语句较多B.函数体语句较少C.函数执行时间较短D.函数执行时间过长9.intFunc(int,int);不可与下列哪个函数构成重载()A.intFunc(int,int,int);B.doubleFunc(int,int);

1C.doubleFunc(double,double);D.doubleFunc(int,double);10.对类中声明的变量,下列描述中正确的是()A.属于全局变量

2B,只属于该类C.属于该类,某些情况下也可被该类不同实例所共享D.任何情况下都可被该类所有实例共享10.类的私有成员可在何处访问()A.通过子类的对象访问B,本类及子类的成员函数中C,通过该类对象访问D.本类的成员函数中11.如果没有为ー个类定义任何构造函数的情况下,下列描述正确的是(A.编译器总是自动创建一个不带参数的构造函数B.这个类没有构造函数C.这个类不需要构造函数D.该类不能通过编译12.ー个类可包含析构函数的个数是()A.0个B.1个C.至少ー个D.〇个或多个13.this指针存在的目的是()A.保证基类公有成员在子类中可以被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类保护成员在子类中可以被访问D.保证基类私有成员在子类中可以被访问14.下列关于类的权限的描述错误的是()A.类本身的成员函数只能访问自身的私有成员B.类的对象只能访问该类的公有成员C.普通函数不能直接访问类的公有成员,必须通过对象访问C.ー个类可以将另ー个类的对象作为成员16.在编译指令中,宏定义使用哪个指令()A.#includeB.#defineC.#ifD.#else17.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是()A.A类构造函数先执行C.两者并行执行18.下列描述错误的是()A.在创建对象前,静态成员不存在C.静态成员不能是虚函数19.对于友元描述正确的是()A.友元是本类的成员函数C.友元不是函数B.成员构造函数先执行D.不能确定B,静态成员是类的成员D.静态成员函数不能宜接访问非静态成员B,友元不是本类的成员函数D.友元不能访问本类私有成员第2页共2页

320.在哪种派生方式中,派生类可以访问基类中的protected成员()A.public和privateB.public和protectedC.protectedネロprivateD.仅protected二、填空题(本大题共20小题,每小题I分,共20分)请在毎小题的空格中填上正确答案。错填、不填均无分。21.设要把ー个文件输出流对象myFile与文件"f:\myText.txt相关联,所用的C++语句是:»22.C++中ostream类的直接基类是.23.运算符[]只能用运算符来重载,不能用友元运算符来重载。24.定义虚函数所用的关键字是〇25.vector类中用于返回向量中第1个对象的方法是»26.在C++中,利用向量类模板定义一个具有20个char的向量E,其元素均被置为字符't',实现此操作的语句是27.类的继承是指子类继承基类的和成员函数。28.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为029.指令指示编译器将一个源文件嵌入到带该指令的源文件之中。30.设类A有成员函数voidFun(void);若要定义ー个指向类成员函数的指针变量path来指向Fun,该指针变量的声明语句是:.31.设在程序中使用如下语句申请了一个对象数组:Point*ptr=newPo血[2];则在需要释放ptr指向的动态数组对象时,所使用的语句是。32.在保护派生中,基类权限为Private的成员在派生类中.33.类A有如ド成员函数intA::fiin(doublex){return(int)x/2;}intA::fiin(intx){returnx*2;}设a为类A的对象,在主函数中有ints=a.fun(6.0)+a.fun(2),则执行该语句后,s的值为。34.对象传送的消息一般由3部分组成:接收对象名、调用操作名和。35.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的»36.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是。37.在C++中,声明布尔类型变量所用的关键字是.

421.执行下列代码inta=29,b=100;cout«setw(3)«a«b«endl;程序的输出结果是:。22.执行下列代码cout«uHex:”«hex«255;程序的输出结果为〇23.C++语言中可以实现输出ー个换行符并刷新流功能的操控符是0三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。24.#includemain(){intx=5,y=6;constint*p=&x;*p=y;cout«*p«endl;)25.#includeclassf{private:intx,y;public:fl(){x=0;y=0;}print(){cout«x«,z«y«endl;}}main(){fa;a.fl(l,l);a.print();}26.#includeclassf{private:intx=0,y=0;

5public:voidfl(inta,intb){x=a;y=b;}voidget(){cout«x«,«y«endl;}};main(){fa;a.fl(l,3);aget();}21.#includeclasspoint{private:floatx;public:voidfi(floata){x=a;}voidf(){x=0;}friendfloatmax(point&a,point&b);):floatmax(point&a,point&b){retum(a.x>b.x)?a.x:b.x;}main(){pointa,b;a.R2.2);b.f(3.3);cout«a.max(a,b):}22.#includetemplateclassf{private:Tx,y;public:voidfl(Ta,Tb){x=a;y=b;}Tmax(){retum(x>y)?x:y;}};main(){fa;a.fl(1.5,3.8);,cout«a.x«a.y«a.max()«endl;

6}四、完成程序题(本大题共5小题,每小题4分,共20分)21.完成下面类中的成员函数的定义。classpoint(private:intm,n;public:point(int,int);point(point&);m=a;point::point(){m=t.m;n=t.n;}22.下面是ー个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。#includeusingnamespacestd:pi=3.14159:voidmain(){doubler;coutw"r=";doublel=2.0*pi*r;doubles=pi*r*r;cout«

7Thelongis:"«l«endl:cout«,rTheareais:”«s«endl;}23.在下划线处填上缺少的部分。

8#include#includeusingnamespacestd;classcomplex(public:intreal;intimag;complex(intr=0,inti=0)(real=r;imag=i:complexoperatori-(,complex&b)(intr=a.real+b.real;inti=a.imag+b.imag;return;}voidmain()(complexx(1,2),y(3,4),z;z=x+y;cout«z.real«n+“«z.imag«"i"«endl;}21.程序的输出结果如下:1,950,30请根据输出数据在下面程序中的下划线处填写正确的语句。源程序如下:#includeusingnamespacestd:classbase(

9private:intm;public:base(){};base(inta):m(a){}intget(){returnm;}voidset(inta){m=a;}};voidmain()(base*ptr=newbase[2];ptr->set(30);ptr=;ptr->set(50);basea[2]={l,9};cout«a[0].get()«f,,"«a[l].get()«endl;cout«ptr->get()«,r»〃:ptr=ptr-l;cout««endl;delete[]ptr;}21.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。#includeusingnamespacestd;voidmain()(floata,b;/Z函数cha的原型声明a=12.5;b=6.5;floatc=;//调用函数chacout«c«endl;

10}floatcha(floatx,floaty)(floatw;w=x-y;returnw;}五、程序分析题(本大题共4小题,每小题5分,共20分)21.给出下面程序的输出结果。#includetemplateclassSampleTn;public:intopcrator==(Sample&);templateintSample::opcrator==(Sample&s){if(n=s.n)return1;elsereturn0;}voidmain()(Samplesl(2),s2⑶;.coutw"si与s2的数据成员”《(sl=s2?"相等”:〃不相等〃)«endl;Samples3(2.5),s4(2.5);cout"〃s3与s4的数据成员〃«(s3=s4?〃相等〃:〃不相等〃)«endl;22.给出下面程序的输出结果。

11#includeusingnamespacestd;templateTmax(Tml,Tm2){retum(ml>m2)?ml:m2:}voidmain(){cout«max(1,7)«〃で〃«max(2.0,5.0)«endl;cout«max(fy'/b'vv〃't〃«max(nA",〃a")«endl;21.给出下面程序的输出结果#includeusingnamespacestd;classA{public:intx;A(){}A(inta){x=a;}intget(inta){returnx+a;}};voidmain(){Aa(8);int(A::*p)(int);p=A::get;cout«(a.*p)(5)«endl;A*pi=&a;cout«(pi->*P)(7)«endl;}22.给出下面程序的输出结果。include#includeusingnamespacestd;classBook{char*title;char*author;intnumsold;

12public:Book(){}Book(constchar*strl,constchar*str2,constintnum){intlen=strlen(strl);title=newchar[len+l];strcpy(title,strl);len=strlen(str2):author=newchar[len+l];strcpy(author»str2);numsold=num;}voidsetbook(constchar*strl,constchar*str2,constintnum){intlen=strlen(strl);title=newchar[len+l];strcpy(title,strl);lcn=strlen(str2);author=newchar[len+1];strcpy(author,str2);numsold=num;〜Book(){deletetitle;deleteauthor;voidprint(ostream&output){output«"书名:"«title«endl;outputw"作者:"«author«endl;output«,,月销售量:"«numsold«endl;}•voidmain(){Bookobjl("数据结构〃,〃严蔚敏〃,200),obj2;objl.print(cout);obj2.setbook(〃C++语言程序设计〃,"李春葆",210);

13obj2.print(cout);}六、程序设计题(本大题共1小题,共10分)21.在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形#include#includeclasspoint{private:floatx,y;public:point(floata,floatb){x=a;y=b;}point(){x=0;y=0;},voidset(floata,floatb){x=a;y=b;}floatgetx(){returnx;}floatgety(){returny;}};classtri{pointx,y,z;floatsi,s2,s3;public;...settri(....);//用于输入三个顶点坐标....test(....);//用于判断是否构成三角形);请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)全国2009年1月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,毎小题1分,共20分)在毎小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.C++源程序文件扩展名为()A..cppB..hC..libD..obj2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是()A.cerrB.cinC.coutD.cfile3.包含自定义头文件file.h的预处理指令是()A.#defineB.#includefile.hC.#definefile.hD.#include"file.h"

144.用于标识十六进制前缀或后缀是A・元C,前缀零5.设存在整型变量intx,则下列句上A.int*p=&x;C.int&p=x;6.在定义类成员时,为产生封装性,A.publicC.protected7设函数voidswap(int&,int&)*则执行swap(a,b)后,a、b值分A.10,10C.15,108.函数默认参数在函数原型中说明,A.前部C.后部9.设存在函数intmin(int,int)返回jA.intm=min(min(15»26),minB.intm=min(15,26,47);C.intm=min(15,min(47,26));D.intm=min(min(47,26),16);10.下列函数不能和函数voidprint(A.intprint(int);()B.后缀L或eD.前缀Oxラ其它三项含义不同的是()8.1nt&p=x;D.int&p=x;则需使用哪个关键字()B.publish□.privateキ交换两形参的值,如两整型变量inta=10;intb=15;别为()B.10,15D.15,15默认参数必须放在参数序列的()B.中部D.两端两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是()(15,47));char)构成重载的是()B.voidprint(char,char);C.intprint(char);11.在下列成对的表达式中,运算结A.7/2和7.0/2.0C.7.0/2和7/2D.voidprint(int,int);果类型相同的ー对是()B.7/2.0和7/2D.7.0/2.0和7.0/212.内联函数的特点是()A.减少代码量,加快访问速度C.增加代码量,减缓访问速度13.类的私有成员可在何处被访问(A.本类的成员函数中B.减少代码量,减缓访问速度D.增加代码量,加快访问速度)B.本类及子类的成员函数中C.通过对象名在任何位置D.不可访问14.类的构造函数在以下什么情况下会被自动调用()A.定义成员函数时B.定义对象时C.定义数据成员时D-定义友元函数时15.下列关于析构函数描述正确的是()A.可以重载B.函数体中必须有delete语句C.返回类型必须是void类型D.不能指定返回类型16.设有函数TSum(Tx,Ty){returnx+y;),其中T为模板类型,则下列语句中对该函数错误的使用是()A.Sum(1,2);B.Sum(3.0,2.2);C.Sum('A','C');D.Sum("A","C");17.下列哪个编译指令属于条件编译指令()A.#includeB.#defineC.#elseD.#pragma18.关于类的静态成员函数描述错误的是()

15A.在创建对象前不存在B.不能说明为虚函数C.不能直接访问非静态函数D.不是对象的成员14.如果类A被声明成类B的友元,则()A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元20.派生类的对象可以访问以下那种情况继承的基类成员(A.私有继承的私有成员B.公有继承的私有成员C.私有继承的保护成员D.公有继承的公有成员二、填空题(本大题共20小题,毎小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.若使用标准输出流把整型变量a的值输加到屏幕匕实现此操作的C++语句是〇22.C++将数据从ー个对象流向另ー个对象的流动抽象为“流”,从流中获取数据的操作称为。23.执行下列代码intb=100;cout«"Hex:"«hex«b;程序的输出结果是。24.静态联编所支持的多态性称为的多态性。25.C++程序必须有且只有一个主函数,其函数名为«26.写出声明一个复数对象的语句,并使该对象被初始化为2.2+13,此声明语句是〇27.若有函数定义为:intadd(intml=0,intm2=2,intm3=4){returnml+m2+m3;}在主函数中有ints=add(1)+add(0,1)+add(0,1,2);则执行此语句后s的值为.28.C++中使用关键字说明函数为内联函数。29.在源程序中有宏定义:#definePI3.14,则若不想使该宏定义影响到程序的其它地方,可以使用删除该宏定义。30.类和其它数据类型不同的是,组成这种类型的不仅可以有数据,还可以有对数据进行操作的。31.有下列代码inta=0;doubleb=0;cin»a»b:当用键盘输入1.25时,b=〇32.对于类Point而言,其析构函数的定义原型为。33.对象成员构造函数的调用顺序取决于这些对象在类中说明的顺序,与它们在成员初始化列表中给出的顺序34.类的简单成员函数是指声明中不含ヽvolatile、static关键字的函数。35.与操作对象的数据类型相互独立的算法称为。36.从ー个或多个以前定义的类产生新类的过程称为。37.在vector类中向向量尾部插入一ー个对象的方法是。38.C++中用于动态创建对象,并返回该对象的指针的关键字是。39.C++的流类库预定义的与标准输出设备相联接的流是。40.执行下列代码cout«noshowpoint«123.0;程序输出结果是〇

16三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.#includeclassf{private:floatx,y;public:f(floata»floatb){x=a;y=b;}floatmax(){return(xclasstest{private:intx;public:test(inta){x=a;}voidset(inta){x=a;}voidget(){cout«x«endl;})main(){consttesta(3);a.set(5);a.get();}43.#includeclasspoint{private:floatx,y;public:fl(floata,floatb){x=a;戸b;}point(){x=0;y=0;}voidgetx(){cout«x«endl;}voidgety(){cout«y«endl;}};voidprint(pointa){cout«a.x«endl;}main(){pointa;a.fl(3.0,5.0);print(a);}44.#includeclassf{private:intx,y;

17public:fl(inta,intb){x=a;y=b;}voidprint(){cout«x«y«endl;});main(){fa;a.fl(1.5,1.8);a.print();45.#includemain(){intx=6;constint*p=x;cout«*p«endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)46.完成下面程序,使其输出10,并在退出运行时正确释放分配给指针的存储空间。#includcusingnamespacestd;voidmain()(int*a,*p;a=newint(10);P=;cout«*p«endl;47.#includeusingnamespacestd;classbase(private:intx;public:base(inta){x=a;}intget(){returnx;}voidshowbase(){cout«Mx=n«x«endl;}};classDerived:publicbase{private:inty;public:Derived(inta,intb):base(a){y=b;}voidshowderived()

18{cout«"x="«get()«",y=n«y«endl;}};voidmain(){baseb(3);Derivedd(6,7);b.showbase();d.showderived();b.showbase();bl.showbase();base*pb=&bl;pb->showbase();d.showderived();b.showbase();}输出结果如下:x=3x=6,y=7x=6x=6x=6x=6,y=7x=646.下面程序的运行结果如下:B::display()C::display()在下划线处填上缺少的部分。源程序如下:#includeusingnamespacestd;classB(public:display(){cout«”B::display()M«endl;}};classC:publicB(public:display(){cout«"C::display()TT«endl;}

19};voidfun(B*p)p—>display();voidmain()Bb,*pb;Cc;pb=&b;fun(pb);pb=&c;fun(pb);}46.下面程序的运行结果如下:ThisislinelThisisline2Thisisline3在下划线处填上缺少的部分。源程序如下:#include#includeusingnamespacestd;voidmain()(fstreamfin,fbut;fbut.open(Mmy.txt",ios::out);if(!fbut.is_open())return;for(inti=0;i<3;i=i+l)fout«"ThisislineM«i-1-l«endl;fout.close();fin.open("my.txt",ios::in);if(!fin.isopen())return:charstr[100];while()(fin.getline(str,100);cout«str«endl;}fin.close();}47.在下划线处填上缺少的部分。源程序如下:#includcusingnamespacestd;Tfun(Tx)(y?returny;voidmain(){floata=2;cout«fun(a);)

20五、程序分析题(本大题共4小题,每小题5分,共20分)46.请写出myTextl.txt文本文件中的内容#include#includeusingnamespacestd;#includevoidmain()(ofstreammyFilel;myFilel.open("myTextl.txt”);cout«HEnterthedatainChineseformat(e.g.,2008,May25):M«endl;stringDate("2008,January1H);stringYear=Date.substr(0,4);intk=Date.find(",り;inti=Date.find("");stringMonth=Date.substr(k+Li-k-1);stringDay=Date.substr(i+1,2);stringNewDate=Day+””+Month+"”+Year;myFilel«"originaldate:"«Date«endl;myFile1«"Converteddate:"«NewDate«endl:myFilel.close();}52.给出下面程序的输出结果#includeusingnamespacestd;classSimple!intx,y;public:Simple(){x=y=0;}Simple(inti,intj){x=i;月:}voidcopy(Simple&s);voidsetxy(inti,intj){x=i;y=j;}voidprint(){cout«"x="«x<<",y="«y«endl;}卜voidSimple::copy(Simple&s)voidfiinc(Simplesi,Simple&s2)(53.setxy(30,40);s2.setxy(70,80);}voidmain()(Simpleobj1(1,2),obj2:

21obj2.copy(obj1);fiinc(obj1,obj2);obj1.print();objl.print();53.给出下面程序的输出结果#includcniostream.hnintmain(){inti=17;while(i>=10)if(—i%4=3)continue;elsecout«Mi=,,«i—«endl;}54.给出下面程序的输出结果#includeusingnamespacestd;voidmain()(intnum=300;int&ref=num;cout«ref;ref^ref-100;cout«,f"«num;num=num-50;cout«Mn«ref«endl;}六、程序设计题(本大题共1小题,共1。分)55.定义堆栈类模板Stack(先进后出),栈的大小由使用者确定。要求该类模板对外提供如下二种基本操作:(1)push入栈(2)pop出栈,用数组来实现#includeusingnamespacestd;templateclassStack{

22Tx[size];intcurrent;public:Stack(){current=O;}....push(....);-pop(••••););请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)全国2009年10月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。选均无分。1.对C++中主函数描述正确的是()A.名称为main,可为多个B.名称不限,可为多个C.名称为main,必须有且只能有一个D.名称不限,必须有且只能有一个2.调用声明为intresult(inta,intb)的函数时,正确的方法是()A.result(1,2)B.result(1)、多选或未C.result(0.1,0.3)D.result(1,2,3)3.用于包含GH•标准库iostream的预处理指令是()A.#defineC.#define'iostream'4.无类型标识符是指()A.voidC.short5.从本质上看,引用是被引用变量的()A.拷贝C.复制6.下面关于数组的初始化正确的是()A.charstrロB.charstr[2]={*a*,V,1,}:C.charstr[l][2]={{宮,C},{せ,d}};D.charstr[][hfa1,V,'c'};7.C++类中定义的成员默认访问属性为(A.publicC.protected8.决定C++语言中函数的返回值类型的是(B.#includeD.#include'iostream'B.boolD.longB.别名D.克隆B.privateD.friendA.retum语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型

23D.在定义该函数时所指定的数据类型9.函数int&min(int&,int&)返回参数中较小者,设有两整型变量inta=10;intb=15;在执行语句min(a,b)之后,a,b值分别为()A.9,14B.9,15C.10,14D.10,1510.声明函数为内联函数时所使用的关键字为()A.constB.inlineC.shortD.signed11.函数intsum(inta=l,intb=l,intc=3)可与下列哪个函数同时声明()A.doublesum(int);B.charsum(int,int);C.intsum(double);D.intsum(int,int,int);12.函数模板templatevtypenameT>voidFunc(T,T)可具有下列哪种实例化形式()A.voidFunc(float,int)B.voidFunc(char,char)C.voidFunc(int,double)D.voidFunc(bool,float)13.下列访问成员的方式哪个是正确的()A.对象名.对象成员名B.对象指针名.对象成员名C.对象名一►对象成员名D.类名一►对象成员名14.对类A,复制构造函数的原型是()A.A::A(constA&);B.A::A(constA*);C.A::A(constA);D.A::A();15.对classpoint,如使用point*ptr=newpoint[2];创建对象数组,则删除此数组使用的语句是(A.deleteptr[2];B.delete[]ptr;C.deleteptr[];D.delete[2]ptr;16.下列哪个编译指令不属于条件编译指令()A.#ifB.#elseC.#endifD.#error17.类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x的值为()A.未初始化B.等于a.xC,等于〇D.随机18.使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是()A.strlen()B.strcap()C.strcat()D.strcmp()19.基类中的public成员,通过public派生,其在派生类中的访问权限为()A.不可访问B.privateC.protectedD.public20.不同对象调用同名函数,但导致完全不同行为的现象称为()A.抽象B.封装C.继承D.多态性

24二、填空题(本大题共20小题,每小題1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。9.在C++语言的面向对象设计框架中,是程序的基本组成单元。10.执行代码doublepi=3.1415192;cout<usingnamespacestd;intmain(){intnum;max=10;num=1while(numusingnamespacestd;classA{voidshow(){coutvv"Hello!”;)|;intmain(){Aa;a.show();return0;)

2542.#includeusingnamespacestd;intmain(){constintnum=20;intscores[num];for(inti=l;i<=num;i++){scores[i]=i;return0;}43.#includeusingnamespacestd:classCMax{private:intxx;intyy;public:CMax(intx,inty){xx=x;yy=y;}voidsetValue(intx,inty){xx=x;yy=y;}intmax(){returnxx>yy?xx:yy;}};voidmain(){CMaxm();m.setValue(20,30);coutvv"Max="«m.max()«endl;}44.#includeusingnamespacestd;classA{public:charnamc[255];private:char*getName(){returnname;}}:classB:publicA{public:B(char*n){

26strcpy(name,n);}};voidmain(){Bb(〃Hello!");cout«"Name:"«b.getName();)四、完成程序题(本大题共5小题,毎小题4分,共20分)42.将下面程序补充完整,使程序输出结果为:BeginWelcomeShowEnd程序如下:#includeusingnamespacestd:classA{public:cout«"Begin"«endl;}voidshow(){cout«"Show«endl;cout«"End"«endl;}}:Aobject;intmain(){cout«"Welcome"«endl;object.show();return0;}43.请将下面程序补充完整,使程序可以正常打印9x9乘法口诀。#includeusingnamespacestd;classA{private:inta;intb;public:{a=x;b=y;}voidset(intx,inty)

27{a=x;b=y;}voiddisplay(){cout«a«*r«b«'='«a*b;}};intmain(){Aa(1,1);for(inti=1;i<=9;i++){for(intj=l;;j++){a.set(j,i);a.display();cout«cout«endl;return0;}42.将ド面程序补充完整,使程序可以输入学生信息并计算平均成绩。//include#includeusingnamespacestd;classStudent{private:charname[255];intscore[10];public:Student(charn[],ints[]){for(inti=0;i<10;i-H-){score[i]=s[i];}}voidShow(){intsum=0;for(inti=0;i<10;i-H-){cout«"名字:"vvnamevv”,平均成绩:"«sum/10;}}:voidmain(){charname[255];intscore[10];cout«"姓名:";cin»name;for(inti=0;i<10;i-H-){

28cout«"成绩"«i+l«":";cin»score[i];}Students(name,score);s.Show();}42.将下面程序补充完整,使程序可以正常运行,并释放内存。#includeclassA{private:T*data:intlength;public:A(intlen){length=len:data=newT[len];}〜A(){T&operator[](inti){returndata[i];}};intmain(){Aobj(2);obj[0]=l;obj[l]=2;cout«obj[0]«endl;cout«obj[1]«endl;return0;43.将下面程序补充完整,使程序运行结果为:ClassAClassB程序如下:#include#includeclassA(public:virtualvoidGetA()=0;

29};classB:publicA{private:charstr[32];public:voidGetA(){cout«,fClassA"«endl;}constchar*GetB(){}B(char*s){strcpy(str»s);}voidmain(){A*a;Bb("ClassBz,);a=;a->GetA();cout«b.GetB()«endl;return;五、程序分析题(本大题共2小题,毎小题5分,共10分)51.#includeusingnamespacestd;intmain(){intij;for(i=l;i<=4;i+=l)for(j=2;j<=4;j+=j){if(i+j<5)coutvv"+";elsecout«"*";}return0;}52.includeusingnamespacestd;classA{inta;public:A(intaa=0){a=aa;}~A(){coutvv"DestructorA!"«a«endl;}卜

30classB:publicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;}~B(){cout«"DestructorB!u«b«endl;});voidmain(){Bx(5),y(6,7);)六、程序设计题(本大题10分)51.下面Shape类是个表示形状的抽象类,Area()为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。形状的抽象类声明如下:classShape{public:virtualdoubleArea()=0;

31全国2010年10月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,毎小题1分,共20分)在毎小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.C++中注释“〃”的有效范围是()A.从’‘〃"开始到行尾B.从“〃”开始到下ー个“〃”C.“〃”及其后一个字符D.从“〃”开始到程序尾2.假定MyClass为一个类,则该类的复制构造函数的声明语句为()A.MyClassft(MyClassx);C.MyClass(MyClass&x);3.下列选项不是C++关键字的是()A.typedefC.bool4.用于标识十进制常量的前缀或后缀是(A.无前后缀C.前缀〇5.设intx=56;intr=x:若cout«&x;A.56C.0012FF7BB.MyClass(MyClassx);D.MyClass(MyClass*x);B.voidD.inc)B.后缀L或1D,前缀Ox显示0012FF7A,则cout«&r:输出值为(B.0012FF7AD.未知6.使用ド列哪个流格式控制符可设置转换基数为ハ进制()B.octA.decC.hexD.endl7.C++中是否允许在类结构中定义函数()A,不允许B.允许C.仅允许定义构造函数D.只不允许定义构造函数8.设函数voidsubone(int&)将形参减1,如有整型变量intk=10»则执行subone(k);后,k的值为(A.9B.10C.11D.未知9.对函数intmax(inta,intb=0,intc=0,intd二〇,inte=0);下列调用方式正确的是()A.intm=max(10,11,12,13,14);B.intm=max(10,,12,13,14);C.intm=max(10,11,,13,14);D.intm=max(10,11,12,,14);10.类MyClass的定义如下:classMyClass{public:MyClass(){}MyClass(inti){value=newint(i);}int*value;};若要对value赋值,则下面语句正确的是()A.MyClassmy;my.value=10;B.MyClassmy;*my.value=10;C.MyClassmy;my.*value=10;D.MyClassmy(10);

329.包含哪种语句的函数不能声明为内联函数()A.变量定义B.if……elseC.位操作D.switch10.声明函数模板的关键字是()A.inlineB.templateC.constD.short11.对于类中的成员,使用public修饰,表明该成员的访问权限是()A.公有的B.私有的C.保护的D.不可见的12.ー个类中是否可以允许ー个无参数构造函数和一个全部都是默认参数的构造函数共存()A,不允许B.允许C.无法确定D.视构造函数的函数,可确定13.析构函数的参数个数为()A.0个B.1个C.至少1个D.多于1个14.非静态成员函数都会有一个隐含指针,它是()A.self指针B.this指针C.current指针D.one指针17.下列访问公有静态成员的方式,错误的是()A.类名::静态成员名B.对象名.静态成员名C.对象指针ー>静态成员名D.对象指针.静态成员名18.声明友元使用下列哪个关键字()A.classB.constC.friendD.virtual19.派生类继承了基类的()A.所有成员B•部分成员C.数据成员D,成员函数20.基类private成员,通过public:派生,其在派生类中为()A.privateB.protectedC.publicD.不可访问二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.执行下列代码doublepi=3.141592;cout«setprecision(1)«pi;程序的输出结果是〇22.要使用STL库提供的对数组进行升幕排序算法,在源程序中需要包含的头文件是»23.C++语言中动态回收内存的关键字是〇24.执行下列代码intb=100;cout«,,0ct:,,«oct«b;程序的输出结果是〇25.C++语言中用于定义ー个类的关键字是,26.为了使用C++语言标准程序库提供的string类,在程序中必须使用的文件包含命令是ー27.在程序中执行int*a=newint之后,若a为空指针,则表明

3321.C++函数中传递对象地址值是使用作为参数。22.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的.23.C++函数有库函数(标准函数)和两类。24.C++中通过对类的对象进行初始化。25.UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的关系。26.若将一个对象说明为常对象,则通过该对象只能调用它的成员函数,不能调用其它成员函数。27.静态成员函数是的成员,不是对象的成员。28.私有继承时,在派生类中基类的protected权限变为。29.若使用ー个表达式的含义能解释为访问多个基类中的成员,则这种对基类成员的访问就是不确定的,称这种访问具有。30.如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生静态变量。31.vector类中用于获取向量可以容纳最多对象的个数的方法是〇32.C++用于运算符重载的关键字是。33.含有的类称为抽象类,它只能作为基类来使用。三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见34.Sincludeclasstestl{private:intx;public:testl(){x=2;}voidset(inta)(x=a;}voidget(){cout<classtest{private:intx,y;public:voidtestl(inta,intb){x=a;y=b;}intmax();};inttest:max(){if(x>y)returnx;elsereturny;}voidmain(){testa;a.testl(1,3);cout«a.max()«endl;36.^includevoidmain(){intx=5;constint*constp=&x;*p=88;cout«*p«endl;}37.^includeくiostream,h>classpoint(private:floatx,y;public:f(floata,floatb){x=a;y=bf(){x=0;y=0;}voidgetx(){cout<

34}classpointl}private:floatx,y;public:f(floata,floatb){x=a;y=bf(){x=l;y=l;}voidgetx(){cout<voidmain(){stringstrl("wearehere");cout«strl«endl;四、完成程序题(本大题共5小题,每题4分,共20分)22.在下面程序的下划线处填上正确的数据类型,保证程序具有如下输出结果:01717,17,17源程序如下:#includeusingnamespacestd;classbasepublic:num;base(){});intbase::hum=0;voidmain()(cout<usingnamespacestd;templateTf(T&a,T&b,intn){for(inti二〇;i

35a[i]=a[i]+b[i];returna;)voidmain(){Inta[5]={1,2,3,4,5);intb[5]={100,200,3,4,51,*p;for(inti=0;i<2;i++)P=//调用函数ffor(;pくa+5;p++)cout««endl;}50.下列程序将x,y,z按从小到大的顺序排列并将结果返回给实参,在横线处填入正确的内容。templatevoidorder()if(x>y){a=x;x=y;y=a;}if(y>z){a=y;y=z;z=a;}if(x>y){a=x;x=y;y=a;})五、程序分析题(本大题共2小聴,每小题5分,共10分)51.给出下面程序的输出结果ftincludeusingnamespacestd;templateTF(Tx)returnx>5;voidmain(){inta=15;cout<

36";doubleb=-5.8976;cout«F(b)«"

37";cout«F(5)くく“'n";}52.给出下面程序的输出结果#includeくiostream>usingnamespacestd;classA(private:intX,Y;public:A(intmyx,intmyy){X=myx;Y=myy;}voidshow(){coutくく"X=”くくXくく"Y二"くくY«endl;}}:classB:publicA(private:intH,W;public:B(intmyx,intmyy,intmyh,intmyw):A(myx,myy)[H二myh;W二myw;}voidshow(){coutくく"H二”くく

38Hくく";W二"くくW<usingnamespacestd;templateclassqueue{Tx[size];intcurrent,front,rear;public:queue(){current二〇;front二〇;rear=0;}....insert(....);....front(....););请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)全国2011年1月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,每小题1分,共20分)在毎小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.在哪种派生方式中,派生类可以访问基类中的protected成员(B)A.public和privateB.public和protectedC.protected和privateD.仅protected2.对C++语言和C语言的兼容性,描述正确的是(A)A.C++兼容CB.C++部分兼容CC.C++不兼容CD.C兼容C++3.在C++中使用流进行输入输出,其中用于屏幕输出的対象是(C)A.cerrB.cinC.coutD.cfile4.对使用关键字new所开辟的动态存储空间,释放时必须使用(C)A.freeB.createC.deleteD.realse5.如没有使用private关键字定义类的数据成员,则默认为(B)A.privateB.publicC.protectedD.friend6.使用值传递方式将实参传给形参,下列说法正确的是(A)A.形参是实参的备份B.实参是形参的备份C.形参和实参是同一对象D,形参和实参无联系7.在函数调用时,如某一默认参数要指明一个特定值,则有(A)A.其之前所有参数都必须赋值B,其之后所有参数都必须赋值

39C.其前、后所有参数都必须赋值D.其前、后所有参数都不必赋值6.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是(〇A.intm=max(22,max(59,70));B.intm=max(max(22,59).70);C.intm-max(22,59,70);D.intm=max(59,max(22,70));7.下列哪个类型函数不适合声明为内联函数(A)A,函数体语句较多B,函数体语句较少C.函数执行时间较短D.函数执行时间过长8.intFunc(int,int):不可与下列哪个函数构成重载(B)A.intFunc(int,int,int);B.doubleFunc(int,int);C.doubleFunc(double,double);D.doubleFunc(int,double);11.对类中声明的变量,下列描述中正确的是(C)A.属于全局变量B.只属于该类C.属于该类,某些情况下也可被该类不同实例所共享D.任何情况下都可被该类所有实例共享12.类的私有成员可在何处访问(C)A.通过子类的对象访问B.本类及子类的成员函数中C,通过该类对象访问D.本类的成员函数中13.如果没有为ー个类定义任何构造函数的情况下,下列描述正确的是(A)

40A.编译器总是自动创建一个不带参数的构造函数B・这个类没有构造函数C.这个类不需要构造函数D.该类不能通过编译12.ー个类可包含析构函数的个数是(B)A.0个B.1个C.至少ー个D.0个或多个13.this指针存在的目的是(B)A.保证基类公有成员在子类中可以被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类保护成员在子类中可以被访问D.保证基类私有成员在子类中可以被访问14.下列关于类的权限的描述错误的是(B)A.类本身的成员函数只能访问自身的私有成员B.类的对象只能访问该类的公有成员C.普通函数不能直接访问类的公有成员,必须通过对象访问D.ー个类可以将另ー个类的对象作为成员17.在编译指令中,宏定义使用哪个指令(B)A.^includeB.^defineC.#ifD.ttelse18.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是(B)B.成员构造函数先执行D.不能确定B.友元不是本类的成员函数D.友元不能访问本类私有成员A.A类构造函数先执行C.两者并行执行19.下列描述错误的是(A)A.在创建对象前,静态成员不存在B.静态成员是类的成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员20.对于友元描述正确的是(B)A.友元是本类的成员函数C.友元不是函数二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.设要把ー个文件输出流对象myFile与文件“f:\myText.txt”相关联,所用的C++语句是:myFile.open("f:\\m¥Text.txt");。22.C++中ostream类的直接基类是ios类_〇23.运算符[]只能用一成员ー运算符来重载,不能用友元运算符来重载。24.定义虚函数所用的关键字是virtual。25.vector类中用于返回向量中第1个对象的方法是_front()_»26.在C++中,利用向量类模板定义•个具有20个char的向量E,其元素均被置为字符'ピ,实现此操作的语句是vectorE(20,'t').27.类的继承是指子类继承基类的ー数据成员一和成员函数。28.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为ー多态性。29.一#include.指令指示编译器将一个源文件嵌入到带该指令的源文件之中。30.设类A有成员函数

41voidFun(void);要定义ー个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是void(A::・ゆafn)(void);031.设在程序中使用如下语句申请了一个对象数组:Point*ptr=newPoint[2];则在需要释放ptr指向的动态数组对象时,所使用的语句是delete]utr;。32.在保护派生中,基类权限为Private的成员在派生类中一不可访问33.类A有如下成员函数intA::fun(doublex){return(int)x/2;}intA::fun(intx){returnX*2;}设a为类A的对象,在主函数中有ints=a.fun(6.0)+a.fun(2),则执行该语句后,s值为_7_。34.对象传送的消息一般山3部分组成:接收对象名、调用操作名和必要的参数一。35.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的一地址值_。36.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是—T_。37.在C++中,声明布尔类型变量所用的关键字是_bool_。38.执行下列代码inta=29,b=100;cout«setw(3)<main(){intx=5,y=6;constint*p=&x;*P=y;cout«*p«endl;)42.#includeclassf{private:intx,y;public:fl(){x=0;y=0;}print(){cout«x«"<classf{private:intx=0,y=0;public:voidfl(inta,intb){x=a;y=b;}voidget(){coutくくxくぐ,,«y«endl;});main(){fa;a.fl(l,3);a.get();}44.#includeclasspoint{private:floatx;

42public:voidf(floata){x=a;}voidf(){x=0;}friendfloatmax(point&a,point&b);};floatmax(point&a,point&b){return(a.x>b.x)?a.x:b.x;)main(){pointa,b;a.f(2.2);b.f(3.3);cout«a.max(a,b);}32.#includeくiostream.h>templateclassf{private:Tx,y;public;voidfl(Ta,Tb){x=a;y=b;}Tmax(){return(x>y)?x:y;));mainO{fa;a.fl(1.5,3.8);cout<usingnamespacestd;

43pi=3.14159;voidmain(){doubler;coutくく"r=";double1=2.0*pi*r;doubles=pi*r*r;cout<<"

44Thelongis:"«l«endl;coutくくTheareais:"«s<#includeusingnamespacestd;classcomplex(public;intreal;intimag;complex(intr=0,inti=0){real=r;imag=i;));complexoperator+(,complexfeb)(intr=a.real+b.real;inti=a.imag+b.imag;return;}voidmain()(complexx(l,2),y(3,4),z;z=x+y;cout«z.real«"+"«z.imagくく"i"くくendl;33.程序的输出结果如下:1,950,30

45请根据输出数据在下面程序中的下划线处填写正确的语句。源程序如下:#includeusingnamespacestd;classbase{private:intm;public:baseO{};base(inta):m(a){}intget(){returnm;}voidset(inta){m=a;}};voidmain()(base*ptr=newbase[2];ptr->set(30);ptr=;ptr->set(50);basea[2]={L9};cout«a[0].get()くく","«a[l].get()<get()«",";ptr=ptr-l;cout««endl;delete[]ptr;)32.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。#includeusingnamespacestd;voidmain()(floata,b;//函数cha的原型声明a=12.5;b=6.5;

46floatc=;//调用函数chacout<templateclassSampleTn;public:Sampledi){n=i;}intoperator==(Sample&);};templateintSample::operator==(Samp1e&s){if(n==s.n)return1;elsereturn0;)voidmain()(Samplesl(2),s2(3);coutくく〃si与s2的数据成员”くく(sl=s2?”相等〃:〃不相等〃)くくendl;Samples3(2.5),s4(2.5);coutくく〃s3与s4的数据成员〃くく(s3=s4?〃相等〃:〃不相等〃)くくendl;}33.给出下面程序的输出结果。#includeusingnamespacestd;templateTmax(Tml,Tm2){return(ml>m2)?ml:m2;}voidmain(){cout«max(l,7)«〃、t〃くくmax(2.0,5.0)«endl;coutくくmax('y','b')くく〃ゝt”くくmax("A","a")くくendl;

4732.给出下面程序的输出结果#includeusingnamespacestd;classA{public:intx;A(){}A(inta){x=a;}intget(inta)(returnx+a;}};voidmain(){Aa(8);int(A::*p)(int);P=A::get;cout«(a.*p)(5)«endl;A*pi=&a;cout«(pi->*p)(7)«endl;}33.给出下面程序的输出结果。include#includeusingnamespacestd;classBook{char*title;char*author;intnumsold;public:BookO{}Book(constchar*strl,constchar*str2,constintnum)intlen=strlen(strl);title=newchar[len+1];strcpy(title,strl);len=strlen(str2);author=newchar[1en+1];strcpy(author,str2);numsold=num;}voidsethook(constchar*strl,constchar*str2,constintnum){intlen=strlen(strl);title=newchar[len+1];strcpy(title,strl);len=strlen(str2);author=newchar[1en+1];strcpy(author,str2);numsold=num;}〜Book。{deletetitle;deleteauthor;}voidprint(ostreamfcoutput){outputくく”书名:"«title<#includeくmath.h>classpoint{

48private:floatx,y;public:point(floata,floatb){x=a;y=b;}point(){x=0;y=0;}voidset(floata,floatb){x=a;y=b;}floatgetx(){returnx;}floatgety(){returny;}};classtri{pointx,y,z;floatsi,s2,s3;public:....settri(....);//用于输入三个顶点坐标....test(....);//用于判断是否构成三角形};请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)全国2011年10月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,每小题1分,共20分)在毎小题列出的四个备选项中只有一个是符合题目要求的ー请将其代码填写在题后的括号内。错选、多选或未选均无分。1.C++中注释“/*”的有效范围是()A,从“/*”开始到行尾BC.从“/*”开始到“〃”为止D2.如想使用std命名空间,正确的程序语句是(A.usingstd;BC.usingnamespace;D3.下列选项中不是C++关键字的是()A.boolBC.floatD4.用于标识长整型常量的前缀或后缀是(A,无前后缀BC.前缀零D5.对于new类型名[size]描述正确的是(A.申请可以存储size个字节的空间B,申请可以存储1个该数据类型的空间,从“/*”开始后不终止,从“/*”开始到“*/”为止).namespacestd,.usingnamespacestd:.int.var).后缀L或I.前缀Ox)

49C,申请可以存储size个该数据类型对象的空间D,申请可以存储1个字节的空间6.使用下列哪个流格式控制符可以设置转换基数为十六进制()A.decB.octC.hex7.构造函数用于()D.cndlA,定义对象B.初始化对象C.清除对象D.普通计算8.设函数voidswap(int,int)将交换两形参数值,b值分别为()如有两整型变量inta=10;intb=15,则执行sw叩(a,b):之后,aA.15,10B.15,15C.10,15D.10,109.设函数voidsubone(int)将形参值减1,如有整形变量intb=10;则执行subone(b)后,b的值为()A.9B.10C.11D.未知10.CH中函数返回值类型不可以是()A,引用B.指针C.结构D.数组11.声明函数函tFunc(inta=0,intb=3,intc=4)相当于声明了几个函数形式()A.1B.2C.3D.412.C++中专门定义一个仅在模板中使用的参数类型的关键字是(A.constB.inlineC.shortD.typename13.对于类中的成员,使用private修饰,表明该成员的访问权限是()A.公有的B.私有的C.保护的D.不可见的14.使用new创建的对象,对其生命周期描述正确的是()A.由系统决定B,由用户控制C.全局生命周期D.永久存在15.析构函数被调用的时间点是()A.対象被创建时B.対象被销毁时C.不会被调用D.主函数被调用时16.対象的构造函数调用顺序取决于()A.对象成员在初始化列表中给出的顺序B.对象成员在类中声明的顺序C.对象成员与在初始化列表中顺序和类中声明顺序均有关D.随机顺序17.下列对静态成员函数描述正确的是()A.静态成员函数中可使用1个this指针B.静态成员函数中不能使用this指针C.静态成员函数中可使用多个this指针D.静态成员函数中只可使用1个that指针18.友元的声明可出现在(B.类的公有部分D.类的任何部分A.类的私有部分C.类的保护部分19.在下列派生中,子类和父类间是isa关系的是()

50A.privateB.protectedC.publicD.publish20.面向对象不仅进行功能抽象,还要进行()A.动态抽象B1消息抽象C•数据抽象D.算法抽象二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21,在调用函数fl()的过程中,又调用了函数fl(),这种调用称为调用。22.C++中重载“+”运算符的函数名是«23.设为类A添加一个纯虚函数Fun,其第一个参数类型为整型,第二个参数类型为字符型,函数返回值类型为整型。实现此操作的语句是。24.C++程序的头文件和源程序文件扩展名分别为和.cpp。25.在C++中,利用向量类模板定义一个具有20个int类型的向量B,实现此操作的语句是:。26.通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和保护成员这时就成了派生类的27.字符串类型的变量一般用和字符数组类型的变量表示。28.在ー个C++程序中,每个变量都必须遵循的原则。29.在常成员函数里不能更新对象的数据成员,也不能调用该类中没用关键字修饰的成员函数。30.UML是ー种可视化建模语言,主要用于面向对象的和建模。31.复制构造函数采用拷贝方式使用已有对象来建立新对象,又称为函数。32.对于C++类中的成员,若未使用访问权限关键字进行说明,默认的权限是。33.对象的行为是定义在对象属性上的ー组的集合。34.设intmax(int,int)表示计算两个整数中的最大值,则执行语句"cout«max(max(2,3),max(7,8));”的输出结果是。35.函数fim的返回值是字符指针类型,该函数有两个参数,其中一个参数是字符类型,另ー个参数是int类型引用,声明函数fun的原型的语句为。36.string类中用于交换两个字符串对象的值的成员函数为〇37.无论变量x和y是整型还是浮点类型,x*y都表示这两个变量的积,这是典型的的例子。38.执行下列代码inta=29,b=1001;cout«a«setw(6)«b«endl;程序输出结果是:〇39.在C++中,赋值表达式kx++的含义是〇40.设有如下定义:intx;若要将整型变量y定义为变量x的引用,则应使用的语句是〇三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见41.#includcvoidmain(){float*p;p=newfloat[5];for(i=0;i<5;i++){cin>>*(p+i);cout«*(p+i)«endl;}delete[]p;42.#includetemplate

51classf{private:Tx,y;public:voidfl(Ta,Tb){x=a;y=b;}Tmax(){retum(x>y)?x:y;}};voidmain(){fa;a.fl(3.5,3.8);cout«a.max()«endl;*22.#includeclasstest{private:staticintx;inty;public:voidtestl(inta,intb){x=a;y=b;});voidmain(){testa;a.testl(2,3);}23.#includeclassf(private:floatx,y;public:voidfl(floata,floatb){x=a;y=b;}fi[){x=0;y=0;}voidmove(floata,floatb){x=x+a;y=y-b;}voidget(){cout«x«M«y«endl;}voidmain(){f*p,a;a.fl(1.6,3.8);p=&a;p.get();}24.#includeclasspoint{intx;public:voidinit(inta){x=a;}intgetx(){returnx;}voidsetx(inta){x=a;}};

52voidmain(){pointa;a.init(20,30);cout«a.getx()«endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)22.完成下面类中成员函数的定义。classtest{private:intnl;floatfl;public:test(int,floatf);test(test&);};test::test(){nl=n;fl=f;}test::test(test&t){nl=t.nl;fl=;}23.在下面程序中的下划线处填上适当的语句,使程序的输出结果如下:11,7711,77源程序如下:#includeusingnamespacestd;classbase{private:intx,y;public:voidinitxy(inta»intb){x=a;y=b;}voidshow()voidmain()(basea,b:a.show();b=a;b.show();

5348.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=l,y=2x=30,y=40源程序如下:#includeclassSample(intx,y:public:Sample。{x=y=O;}Sample(inti»intj){x=i;y=j;}voidcopy(Sample&s);voidsetxy(inti,intj){x=i;y=j;}voidprint。{cout«l,x=,,«x«M,y=M«y«endl;}voidSample::copy(){x=s.x;y=s.y;}voidfunc()){51.setxy(10,20);52.setxy(30,40);}voidmain。(Samplep(1»2),q;q.copy(p);func(p,q);p.print。:q.print。;}Sample&s}49.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。202122a[0]=20a[l]=21a[2]=22程序清单如下:

54#includeusingnamespacestd;classbaseprivate:intx;public:voidsetx(inta){x=a;}intgetx(){returnx;}};voidmain(){basea[3],*p;a[0].setx(20);a[l].setx(21);a[2].setx(22);fbr(p=a;p〈a+3;p++)fbr(inti=0;i<=2;i++)49.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=2,y=3源程序如下:#includeclassSample{intx,y;public:Sample。{x=y=0;}Sample(){x=a;y=b;}voiddisp()(COUtVぐx="vvxvぐ,y=M«y«endl;}};voidmain()(Samples(2,3)»P->disp();五、程序分析题(本大题共2小题,毎小题5分,共10分)50.请给出下面程序的输出结果#includeusingnamespacestd;voidfun()(staticintn=25;n—;cout«Mn=,,«n«endl;}voidmain()(fbr(inti=0;i<=2;i++)fun();}

5549.请给出下面程序的输出结果#includeusingnamespacestd;classpointintnum;public:point(intn){cout«,,Initializing,,«n«endl;num=n;}};voidmain()IpointA(88);cout«**EnteringmainM«endl;}六、程序设计题(本大题共1小题,共10分)50.给定两个字符串对象S,P(P的长度小于S),实现ー判断函数find,检测S是否完全包含P(串P是S的子串),若包含则返回P第一个字符在串S中的起始地址,否则返回•1。#include#includeclassstr{strings,p;public:str(string&a,string&b){s=a;p=b;}...find(...);};请写出函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)全国2012年1月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,每小题1分,共20分)在毎小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.如声明对象数组,则下列描述正确的是()A.对每个元素均调用一次构造函数B.部分元素调用构造函数,其它元素不需调用C.均不需要调用构造函数D.只是首元素调用构造函数

562.不同对象调用同一成员函数时,this指针指向()A.不同对象C.无对象B.相同对象D.不确定3.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式正确的是()A.intm=max(22,max(59,70));B.intm=max(max(22,59),max(59,70));C.intm=max(max(22,70),59);D.以上皆正确4.ー个类可拥有多少个构造函数()A.0个C.1或多个5.在编译指令中,嵌入指令是指()B.1个D.以上皆对A.#includeC.#ifB.#defineD.#else6.设存在数组a,其长度为Len,下列哪项操作是将a中元素复制到数组b中()A.reverse(a+a,Len,b);C.find(a,a+Len,b);7.下列哪个要素不是面向对象的关键要素(A.模块化C.封装性8.下列对于类的描述错误的是()A.类要先声明后使用B.类是具有唯一标识的实体C.两个类可以使用同一个名称B.sort(a»a+Len,b);D.copy(a,a+Len,b);)B.抽象性D.继承性D.组成类的不仅有数据,还可以有对数据进行操作的函数9.使用引用调用方式将实参传给形参,下列说法正确的是()A.形参是实参的备份C.形参和实参共享同一对象10.关于对象的性质,下列描述错误的是(A.同一类对象之间可相互赋值B.不能使用对象数组C.对象可以用作函数参数D.ー个对象可以用作另ー个类的成员11.类的私有成员可在哪里被赋值()A.类体中C.A和BB.实参是形参的备份D.形参和实参无联系)B.该类的成员函数中D.以上都不是12.设存在数组a,其长度为Len,则下列哪个泛型算法用于反转a中各元素()A.reverse(a»a+Len);C.find(a,a+Len,value);B.sort(a,a+Len);D.copy(a,a+Len,b);13.用于标识ハ进制常量的前缀或后缀是(A.无C.前缀零)B,后缀L或1D.前缀Ox14.派生类中继承的基类成员初始化如何进行()A.由派生类构造函数调用基类的构造函数进行B.由派生类构造函数进行

57C.由基类构造函数进行,无需派生类构造函数调用D.以上皆不正确15.对于多重继承,下列描述正确的是()A.所有基类使用相同的派生方式B.每个基类可使用不同派生方式C.只能是public派生D.只能是protected派生16.下列关于类的权限描述错误的是()A.类本身的成员函数可以访问自身的任何成员B.类的对象可以访问该类的所有成员C.普通函数不能直接访问类的公有成员,必须通过成员函数对其访问D.ー个类可以将另ー个类的对象作为成员17.运算符de匕te与哪个函数一起运行()A.构造函数B.析构函数C.主函数D.不与任何函数一起工作18.ー个类可以获得另ー个类的特性的机制称为()A.抽象B.封装C.继承D.多态性19.使用下列哪个格式控制符可设置转换十六进制为十进制()A.decB.octC.hexD.endl20.对引用调用描述正确的是()A.分配新存储空间B.修改己存储空间的名称为引用名C.引用名与已存在存储空间无任何关联D.将引用名标识符与一块己存在储区域相关联,没有分配新存储空间二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案,错填、不填均无分。21.公共派生中,基类的公有成员在派生类中是〇22.若要使用标准输入流机制从键盘输入ー个整数赋给整型变量a,相应的C++语句是。23.UML中对象行为之间的动态关系是通过对象行为之间的依赖关系表现的,称之为»24.C++函数中按引用调用传递参数时使用作为参数。25.在C++中除具有语句和switch语句的函数外,其它函数都可以说明为内联函数。26.C++中规定模板以关键字和一个形参表示开头。27.构造函数不能被继承,・个派生类只能调用它的基类的构造函数。28.vector类中用于获取存放的元素个数的方法是〇29.C++中istream类的直接基类是〇30.要关闭ー个文件输出流对象myFile,所用的C++语句是,31.执行下列代码doublepi=3.141592cout«setprecision(2)«pi;程序的输出结果是〇32.在私有派生中,基类的权限为private的成员,在派生类中。33.C++总共有3种文件流,分别是输入文件流、输出文件流和〇34.C++使用流进行输入输出,其中能捕获键盘输入的对象是»35.在vector类中删除向量中最后ー个对象的方法是。36.函数重载可使ー个函数名具有多种功能,称这种特性为。37.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是引进了概念。

5838,指令定义ー个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。39.在C++标准输出方式中,要设置输出数据字段宽度width所使用的操控符是。40.设有定义intX:floaty;,则10+x+y值的数据类型是〇三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.#includemain(){intx=9,y=8,z=7;constint*p=z;cout«*p«endl;)42.#includemain(){intx=8,y=6;constint*constp=&x;p=&y;cout«*p«endl;43.#includemain(){fblatp;p=newfblat[5];fbr(inti=0;i<5;i-H-){cin»*(p+i);cout«*(p+i)«endl;}deletep;}44.templateTRTx){Ty;y=x+T;returny;}45.#includeclasspoint{intx;public:voidinit(inta){x=a;}intgetx(){returnx;}voidsetx(inta){x=a;}卜main(){pointa;

59a.init(20,30);cout«a.getx()«endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)46.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。x=2,y=3#includcclassSample•!intx,y;public:Sample(){x=y=O;)Sample(inta»intb){x=a:())voiddisp(){cout«Mx=M«x<<",y=,,«y«endl;}}()voidmain(){Samples(2,3),*p=&s;p->disp();}47.在下划线处填上适当的语句,使程序的输出结果如下:n=30#includetemplateclassSamplefTn:public:Sample(){}Sample(Ti){}Sample&operator+(constSample&);voiddisp(){cout«,,n=,,«n«endl:}

60templateSample&Sample::operator+(constSample&s)(staticSampletemp:returntemp;}voidmain(){Samplesl(10),s2(20),s3;s3=sl+s2;s3.disp();)46.在下划线处填上适当的语句,使程序的输出结果如ド:12345678910#includeclassSample{intA[10][10];public:int&operator()(int,int);};int&Sample::operator()(intx,inty){returnA[x][y];}voidmain(){Samplea;inti,j;fbr(j=O;j<10;j++)fbr(i=O;i<10;i++)cout«a(i,l)w”“;cout«endl;}47.在下划线处填上适当的句子,完成函数的定义。#includeclassSample{intx;

61public:Sample(){};{x=a;}{x=a.x-H-+10;}voiddisp(){cout«Mx=n«x«endl;}};voidmain(){Samplesl(2),s2(sl);51.disp();52.disp();}50.输入一个字符串,将其逆序后输出。#includeusingnamespacestd;voidmain()chara[50];memset(a,0,sizeof(a));inti=0,j;chart;cin.getline(a,50,'

62';fbr(i=0,j=strlen(a)-l;i<;i-H-,j)t=a[i]:aB]=t;)cout«a«endl;I五、程序分析题(本大题共4小题,每小题5分,共20分)51.(给出下面程序的输出结果#includeclassexampleinta;public:example(intb){a=b++;}voidprint(){a=a+1;cout«a«M";}voidprint()const{cout«a«,H,;)};

63voidmain(){examplex(3);constexampley(2);x.print();y.print();}50.给出下面程序的输出结果#includeclassSample(intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}〜Sample。{if(x=y)cout«,,x=y,,«endl;elsecout«Hx!=yM«endl;)voiddisp()COUtVV"X="VVxVV“,y=M«y«endl;voidmain()jSamplesl(2,3);sl.dispO;}51.给出ド面程序的输出结果#includeclassSampleintn:staticintsum:public:Sample(intx){n=x;}

64voidadd(){sum+=n;}voiddisp(){cout«Mn=,,«n«",sum:'*«sum«endl;}intSample::sum=0;voidmain(){Samplea(2),b(3),c(5);a.add();a.disp();b.add();b.disp();c.add();c.disp();}50.给出下面程序的输出结果#includeclassA(private:friendclassB;A(intval=0):data(val),use(l){)intuse,data:};classB{public:A*pa;B(intval=0):pa(newA(val)){}〜B(){iR--pa->use=O)deletepa;}B(B&rhs){++rhsー〉use;pa=rhs.pa;}B&operator=(B&rhs);A*operator->(){returnpa;}voidDisplay(){cout«Mdata=M«pa->data«n,use=,,«pa->use«endl;}};B&B::opcrator=(B&rhs){iRthis==&rhs)retum*this;if(-pa->use==0)deletepa;++rhs->use;

65pa=rhs.pa;return*this;}intmain(){Bbl(l),b2(bl),b3(3);bl.Display();b2.Display();b3.Display();b3=bl;bl.Display();b3.Display();return0;六、程序设计题(本大题共1小题,每小题10分,共10分)50.J知一个student类,包括学姓名,成绩和等级,不含任何成员函数.process为学生信息处理类.classstudent{charname[10];intdeg;charlevel[7];friendclassprocess:public:student(charna[],intd){strcpy(name,na);deg=d;}classprocess{public:voidtrans(studentsロ){…}〃根据学生成绩计算学生等级(优大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分).voiddisp(students口){...}〃根据成绩降序打印所有学生信息};要求实现process类中的两个函数:全国2012年1月高等教育自学考试C++程序设计试题课程代码:04737

66ー、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.如声明对象数组,则下列描述正确的是(A.对每个元素均调用一次构造函数)B.部分元素调用构造函数,其它元素不需调用C.均不需要调用构造函数D.只是首元素调用构造函数2.不同对象调用同一成员函数时,this指针指向()A.不同对象C,无对象B.相同对象D.不确定3.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式正确的是()A.intm=max(22,max(59,70));B.intm=max(max(22,59),max(59,70));C.intm=max(max(22,70),59);D.以上皆正确4.ー个类可拥有多少个构造函数()A.0个C.1或多个5.在编译指令中,嵌入指令是指()A.#includeC.#ifB.1个D.以上皆对B.#defineD.#else6.设存在数组a,其长度为Len,下列哪项操作是将a中元素复制到数组b中()A.reverse(a+a,Len,b);C.find(a,a+Len,b);7。下列哪个要素不是面向对象的关键要素(A.模块化C.封装性8.下列对于类的描述错误的是()A.类要先声明后使用B.类是具有唯一标识的实体C.两个类可以使用同一个名称B.sort(a»a+Len,b);D.copy(a,a+Len,b);)B.抽象性D.继承性D.组成类的不仅有数据,还可以有对数据进行操作的函数9.使用引用调用方式将实参传给形参,下列说法正确的是()A.形参是实参的备份C.形参和实参共享同一对象10.关于对象的性质,下列描述错误的是(A.同・类对象之间可相互赋值B.不能使用对象数组C.对象可以用作函数参数D.ー个对象可以用作另ー个类的成员11.类的私有成员可在哪里被赋值()B.实参是形参的备份D.形参和实参无联系)A.类体中C.A和BB.该类的成员函数中D.以上都不是12.设存在数组a,其长度为Len,则下列哪个泛型算法用于反转a中各元素()A.reverse(a,a+Len);B.sort(a,a+Len);

67C.find(a,a+Len,value);D.copy(a,a+Len.b);13.用于标识ハ进制常量的前缀或后缀是()A.无B.后缀L或1C.前缀零D.前缀Ox14.派生类中继承的基类成员初始化如何进行()A.山派生类构造函数调用基类的构造函数进行B.由派生类构造函数进行C.由基类构造函数进行,无需派生类构造函数调用D.以上皆不正确15.对于多重继承,下列描述正确的是()A.所有基类使用相同的派生方式B.每个基类可使用不同派生方式C.只能是public派生D.只能是protected派生16.下列关于类的权限描述错误的是()A.类本身的成员函数可以访问自身的任何成员B.类的对象可以访问该类的所有成员C.普通函数不能直接访问类的公有成员,必须通过成员函数对其访问D.ー个类可以将另ー个类的对象作为成员17.运算符delete与哪个函数一起运行()A.构造函数B.析构函数C.主函数D.不与任何函数一起工作18.ー个类可以获得另ー个类的特性的机制称为()A.抽象B.封装C.继承D.多态性19.使用下列哪个格式控制符可设置转换十六进制为十进制()A.decB.octC.hexD.endl20.对引用调用描述正确的是()A.分配新存储空间B.修改已存储空间的名称为引用名C.引用名与已存在存储空间无任何关联D.将引用名标识符与一块己存在储区域相关联,没有分配新存储空间二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案,错填、不填均无分。21.公共派生中,基类的公有成员在派生类中是〇22.若要使用标准输入流机制从键盘输入ー个整数赋给整型变量a,相应的C++语句是23.UML中对象行为之间的动态关系是通过对象行为之间的依赖关系表现的,称之为。24.C++函数中按引用调用传递参数时使用作为参数。25.在C++中除具有语句和switch语句的函数外,其它函数都可以说明为内联函数。26.C++中规定模板以关键字和一个形参表示开头。27.构造函数不能被继承,ー个派生类只能调用它的基类的构造函数。28.vector类中用于获取存放的元素个数的方法是029.C++中istream类的直接基类是〇30.要关闭一个文件输出流对象myFile,所用的C++语句是.31.执行下列代码doublepi=3.141592

68cout«setprecision(2)«pi:程序的输出结果是。13.在私有派生中,基类的权限为private的成员,在派生类中。14.C++总共有3种文件流,分别是输入文件流、输出文件流和。15.C++使用流进行输入输出,其中能捕获键盘输入的对象是。16.在vector类中删除向量中最后ー个对象的方法是。17.函数重载可使ー个函数名具有多种功能,称这种特性为。18.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是引进了概念。19.指令定义ー个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。20.在C++标准输出方式中,要设置输出数据字段宽度width所使用的操控符是〇21.设有定义intX;floaty;,则10+x+y值的数据类型是=三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。22.#includemain(){intx=9,y=8,z=7;constint*p=z;cout«*p«endl;}42.#includemain(){intx=8,y=6;constint*constp=&x;p=&y;cout«*p«endl;)43.#includemain(){fblatp;p=newfolat[5];fbr(inti=0;i<5;i++){cin»*(p+i);cout«*(p+i)«endl;}deletep;)44.templateTf(Tx){Ty;尸k+T;returny;)45.#includeclasspoint{intx;

69public:voidinit(inta){x=a;}intgetx(){returnx;}voidsetx(inta){x=a;}};main(){pointa;a.init(20,30);cout«a.getx()«endl;)四、完成程序题(本大题共5小题,每小题4分,共20分)46.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。x=2»y=3#includeclassSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;()}voiddisp(){cout«Mx=M«x«",y=M«y«endl;})()voidmain(){Samples(2,3),*p=&s;p->disp();}47.在下划线处填上适当的语句,使程序的输出结果如下:n=30#includctemplateclassSample{

70Tn;public:Sample(){}Sample(Ti){}Sample&operator+(constSample&);voiddisp(){cout«Mn=M«n«endl;}}:templateSample&Sample::operator+(constSample&s)staticSampletemp;returntemp;voidmain(){Samplesl(10),s2(20),s3;s3=sl+s2;s3.disp();}46.在下划线处填上适当的语句,使程序的输出结果如下:12345678910#includeclassSample{intA[10][10];public:int&operator()(int,int);}:int&Sample::operator()(intx,inty)*returnA[x][y];}voidmain(){Samplea;inti,j;fbr(j=O;j<10;j-H-)fbr(i=O;i<10;i-H-)

71cout«a(i,1)«"cout«endl;}46.在下划线处填上适当的句子,完成函数的定义。#includeclassSampleintx;public:Sample(){};{x=a;}{x=a.x-H-+10;}voiddisp(){cout«,'x=M«x«endl:}};voidmain()sl.disp();s2.disp();}47.输入一个字符串,将其逆序后输出。#includeusingnamespacestd;voidmain(){chara[50];memset(a,0,sizeof(a)):inti=0,j;chart;cin.getline(a,50,'

72';fbr(i=O,j=strlen(a)-l;i<;i-H-,j)t=a[i]:a[j]=t;)cout«a«endl;}五、程序分析题(本大题共4小题,每小题5分,共20分)48.(给出下面程序的输出结果#includeclassexample{inta;

73public:example(intb){a=b-H-;}voidprint(){a=a+l;cout«a«H";}voidprint()const{cout«a«,H,;));voidmain(){examplex(3);constexampley(2);x.print();y-print();)46.给出下面程序的输出结果#includeclassSampleintx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}〜Sample。if(x=y)cout«Hx=yM«endl;elsecout«,,x!=y,,«endl;}voiddisp(){cout«Mx=,,«x«",y=M«y«endl;}voidmain(){Samplesl(2,3);sl.dispO;}47.给出下面程序的输出结果#includeclassSample{

74intn;staticintsum;public:Sample(intx){n=x;}voidadd(){sum+=n;}voiddisp()fcout«nn=,,«n«,*,sum:n«sum«endl;});intSample::sum=0;voidmain()(Samplea(2),b(3),c(5);a.add();a.disp();b.add();b.disp();c.add();c.disp();)46.给出下面程序的输出结果#includeclassA{private:friendclassB;A(intval=O):data(val),use(l){}intuse»data;};classB{public:A*pa;B(intval=O):pa(newA(val)){}〜B(){if(--pa->use=O)deletepa;}B(B&rhs){++rhs->use;pa=rhs.pa;}B&operator=(B&rhs);

75A*opcrator->(){returnpa;}voidDisplay(){cout«Mdata=M«pa->data«",use=M«pa->use«endl;}};B&B::operator=(B&rhs){ififthis==&rhs)retum*this;一一pa->use==0)deletepa;++rhs->use;pa=rhs.pa;return*this;}intmain(){Bbl(l),b2(bl),b3(3);bl.Display();b2.Display();b3.Display();b3=bl;bl.Display();b3.Display();return0;六、程序设计题(本大题共1小题,每小题10分,共10分)46.已知一个student类,包括学姓名,成绩和等级,不含任何成员函数.process为学生信息处理类.classstudent{charname[10];intdeg;charlevel[7];friendclassprocess:public:student(charna[],intd){strcpy(name,na);deg=d:}):classprocess{public:voidtrans(studentsロ){…}〃根据学生成绩计算学生等级(优大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分).voiddisp(students口){…}〃根据成绩降序打印所有学生信息要求实现process类中的两个函数:

76全国2012年1月高等教育自学考试C++程序设计试题课程代码:04737ー、单项选择题(本大题共20小题,每小题1分,共20分)在毎小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.如声明对象数组,则下列描述正确的是()A.对每个元素均调用一次构造函数B.部分元素调用构造函数,其它元素不需调用C.均不需要调用构造函数D.只是首元素调用构造函数2.不同对象调用同一成员函数时,this指针指向()A.不同对象B.相同对象C.无对象D.不确定3.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式正确的是()A.intm=max(22,max(59,70));B.intm=max(max(22,59),max(59,70));C.intm=max(max(22,70),59);D.以上皆正确4.一个类可拥有多少个构造函数()A.0个B.1个C.1或多个D.以上皆对5.在编译指令中,嵌入指令是指()A.#includeB.#defineC.#ifD.#else6.设存在数组a,其长度为Len,下列哪项操作是将a中元素复制到数组b中()A.reverse(a+a,Len,b);B.sort(a,a+Len,b);C.find(a,a+Len,b);D.copy(a,a+Len,b);7。下列哪个要素不是面向对象的关键要素()A.模块化B.抽象性C.封装性D.继承性8.下列对于类的描述错误的是()A.类要先声明后使用B.类是具有唯一标识的实体C.两个类可以使用同一个名称D.组成类的不仅有数据,还可以有对数据进行操作的函数9.使用引用调用方式将实参传给形参,下列说法正确的是()A.形参是实参的备份B.实参是形参的备份C.形参和实参共享同一"对象D.形参和实参无联系10.关于对象的性质,下列描述错误的是()A.同一类对象之间可相互赋值

77B.不能使用对象数组C.对象可以用作函数参数D.ー个对象可以用作另ー个类的成员8.类的私有成员可在哪里被赋值()A.类体中B.该类的成员函数中C.A和BD.以上都不是9.设存在数组a,其长度为Len,则下列哪个泛型算法用于反转a中各元素()A.reverse(a,a+Len);B.sort(a»a+Len);C.find(a,a+Len.value);D.copy(a,a+Len.b);10.用于标识ハ进制常量的前缀或后缀是()A.无B.后缀L或1C.前缀零D.前缀Ox11.派生类中继承的基类成员初始化如何进行()A.由派生类构造函数调用基类的构造函数进行B.由派生类构造函数进行C.山基类构造函数进行,无需派生类构造函数调用D.以上皆不正确12.对于多重继承.下列描述正确的是()A.所有基类使用相同的派生方式B.每个基类可使用不同派生方式C.只能是public派生D.只能是protected派生13.下列关于类的权限描述错误的是()A.类本身的成员函数可以访问自身的任何成员B.类的对象可以访问该类的所有成员C.普通函数不能直接访问类的公有成员.必须通过成员函数对其访问D.ー个类可以将另ー个类的对象作为成员14.运算符delete与哪个函数一起运行()A.构造函数B.析构函数C.主函数D.不与任何函数一起工作はー个类可以获得另ー个类的特性的机制称为()A.抽象B.封装C.继承D.多态性19.使用下列哪个格式控制符可设置转换十六进制为十进制()A.decB.octC.hexD.endl20.对引用调用描述正确的是()A.分配新存储空间B.修改已存储空间的名称为引用名C.引用名与已存在存储空间无任何关联D.将引用名标识符与一块己存在储区域相关联.没有分配新存储空间二、填空题(本大题共20小题.每小题1分,共20分)请在毎小题的空格中填上正确答案,错填、不填均无分。21.公共派生中.基类的公有成员在派生类中是〇22.若要使用标准输入流机制从键盘输入ー个整数赋给整型变量a.相应的C++语句是23.UML中对象行为之间的动态关系是通过对象行为之间的依赖关系表现的.称之为0

7819.C++函数中按引用调用传递参数时使用作为参数。20.在C++中除具有语句和switch语句的函数外.其它函数都可以说明为内联函数。21.C++中规定模板以关键字和一个形参表示开头。22.构造函数不能被继承,ー个派生类只能调用它的基类的构造函数。23.vector类中用于获取存放的元素个数的方法是〇24.C++中istream类的直接基类是〇25.要关闭ー个文件输出流对象myFile,所用的C卄语句是〇26.执行下列代码doublepi=3.141592cout«setprecision(2)«pi;程序的输出结果是〇27.在私有派生中,基类的权限为private的成员,在派生类中〇33cH总共有3种文件流,分别是输入文件流、输出文件流和〇34.C++使用流进行输入输出,其中能捕获键盘输入的对象是〇35.在vector类中删除向量中最后ー个对象的方法是〇36.函数重载可使ー个函数名具有多种功能,称这种特性为037.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是引进了概念。38.指令定义ー个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。39.在C++标准输出方式中,要设置输出数据字段宽度width所使用的操控符是〇40.设有定义intx;floaty;»则10+x+y值的数据类型是。三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.#includemain(){intx=9,y=8,z=7;constint*p=z;cout«*p«endl;)42.#includemain(){intx=8,y=6;constint*constp=&x;p=&y;cout«*p«endl;}43.#includemain(){fblatp;p=newfblat[5];fbr(inti=0;i<5;i-H-){cin»*(p+i);cout«*(p+i)«endl;}deletep;}

7944.templateTRTx){Ty;y=x+T;returny;45.#includeclasspoint{intx;public:voidinit(inta){x=a;}intgetx(){returnx;}voidsetx(inta){x=a;}};main(){pointa:a.init(20,30);cout«a.getx()«endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)46.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。x=2,y=3#includeclassSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;())voiddisp()(cout«"x="«x«",y="«y«endl;)}()voidmain(){Samples(2,3),*p=&s;p->disp();}47.在下划线处填上适当的语句,使程序的输出结果如下:n=30#include

80templateclassSample{Tn:public:Sample(){}Sample(Ti){}Sample&operator4-(constSample&);voiddisp(){cout«Mn=H«n«endl;}templateSample&Sample::operator+(constSample&s){staticSampletemp;returntemp;}voidmain()Samples1(10),s2(20),s3;s3=sl+s2;s3.disp();)46.在下划线处填上适当的语句,使程序的输出结果如下:12345678910#includeclassSample{intA[10][10];public:int&operator()(int,int);卜int&Sample::operator()(intx»inty)freturnA[x][y];}voidmain(){Samplea:inti,j;fbr(j=O;j<10;j++)

81fbr(i=O;i<10;i++)cout«a(i,1)«H";cout«endl;}46.在下划线处填上适当的句子,完成函数的定义。#includeclassSample{intx;public:Sample(乂};{x=a;}{x=a.x-H-+10;}voiddisp(){cout«Mx=M«x«endl;}};voidmain(){Samplesl(2),s2(sl);sl.disp();s2.disp();}47.输入一个字符串,将其逆序后输出。#includeusingnamespacestd;voidmain(){chara[50];memset(a,0,sizeoflfa));inti=0,j;chart;cin.getline(a,50,'

82';fbr(i=O,j=strlen(a)-l;i<;i++,j){t=a[i];aB]=t;)cout«a«endl;)五、程序分析题(本大题共4小题,每小题5分,共20分)48.(给出下面程序的输出结果#include

83classexample{inta:public:example(intb){a=b++;}voidprint(){a=a+l;cout«a«MM;}voidprint()const{cout«a«,H,;)};voidmain(){examplex(3);constexampley(2);x.print();y.print();46.给出下面程序的输出结果#includeclassSample*intx,y;public:Sample(){x=y=O;}Sample(inta,intb){x=a;y=b;}〜Sample。(if(x==y)cout«,,x=y,,«endl;elsecout«nx!=yM«endl;)voiddisp()]cout«Mx=M«x«M,y=M«y«endl;}};voidmain。{Samplesl(2,3);sl.disp。;}47.给出下面程序的输出结果#includeclassSample

84{intn:staticintsum:public:Sample(intx){n=x:}voidadd(){sum+=n:}voiddisp()(cout«"n="«n«",sum:"«sum«endl;)};intSample::sum=0;voidmain(){Samplea(2),b(3),c(5);a.add();a.disp();b.add();b.disp():c.add();c.disp();}46.给出下面程序的输出结果#includeclassA!private:friendclassB;A(intval=O):data(val),use(l){}intuseydata;};classB{public:A*pa;B(intval=O):pa(newA(val)){}〜B(){if(-pa->use=O)deletepa;}B(B&rhs){++rhs->use;pa=rhs.pa;}B&operator=(B&rhs);

85A*operator->(){returnpa;}voidDisplay(){cout«Mdata=,,«pa->data«n,use=,,«pa->use«endl;B&B::operator=(B&rhs)(ifi(this==&rhs)retum*this;if(ーーpa->use==0)deletepa;++rhs->use;pa=rhs.pa;return*this;}intmain(){Bbl(l),b2(bl),b3(3);bl.Display();b2.Display();b3.Display();b3=bl;bl.Display();b3.Display();return0;六、程序设计题(本大题共1小题,每小题!0分,共10分)46.一知一个student类,包括学姓名,成绩和等级,不含任何成员函数.process为学生信息处理类.classstudent{charname[10];intdeg;charlevel[7];friendclassprocess:public:student(charna[]»intd){strcpy(name,na);deg=d;}classprocess{public:voidtrans(students口){…}〃根据学生成绩计算学生等级(优大于89分,良大于フ9分,中大于69分,及格大于59分,不及格小于60分).

86voiddisp(students[]){.・.}//根据成绩降序打印所有学生信息卜要求实现process类中的两个函数:全国2012年10月高等教育自学考试C++程序设计试题课程代码:04737请考生按规定用笔将所有试题的答案涂、写在答题纸上。选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。ー、单项选择题(本大题共20小题,每小题1分,共20分)在毎小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。1.使用下列哪ー限定符可强制改变访问方式A.constB.shortC.longD.signed2.下列表达式,哪ー是声明P为指向常量的指针A.constint*pB.int*constp;C.constint*constpD.int*p3.运算符::叫做A.下标运算符B.自增运算符C.成员访问运算符D.作用域运算符4.如果为ー个类定义了自己的构造函数,下列描述正确的是A.系统不再提供默认构造函数,但提供其他构造函数B.系统提供其他非默认构造函数C.系统不再提供默认构造函数D.系统仍提供默认构造函数5.对于类中的成员,使用protected修饰,表明该成员的访问权限是A.公有的B.私有的C.保护的D.不可见的6.类不是内存中的物理实体,只有当使用类产生对象时,オ进行内存分配,这种对象建立的过程称为A.程序化B.结构化C.过程化D.实例化7.下列关于类的权限描述错误的是A.类本身的成员函数可以访问自己定义的任何成员8.类的对象只能访问公有成员C.普通函数只能通过对象访问类的公有成员D.ー个类不能包含另ー个类的对象作为成员

871.在派生中,访问控制方式没有下列哪种A.publishB.publicC.protectedD.private9.采用重载函数的目的是A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性10.设类A中包含若干其他类的对象作为成员,则在定义类A的构造函数时,应使用下列哪个符号将A::A(参数表)与成员初始化列表隔开B.;A.,C.:D..11.设存在数组a,其长度为Len,则下列哪个泛型算法用于对a进行升塞排序A.reverse(a,a+Len);B.sort(a,a+Len);C.find(a,a+Len,value);D.copy(a,a+Len,b);12.函数intsum(inta=10,intb=15,intc=25);不可与下列哪个函数同时声明A.intsum(int,int,int,int)B.intsum(int,int,int)C.intsum(double)D.intsum(double,double,double);13.对函数intsaveName(char*first,char*sec="",char*thd="")下列调用方法不正确的是A.ints=saveName("l","2","3");B.ints=saveName("l","2");C.ints=saveName("l");D.ints=saveName("l",,"3");14.下列哪个不是函数重载需要满足的条件A.返回值类型不同B.参数个数不同C.参数个数相同时,参数类型不同D.函数名相同15.关于对象性质,下列描述错误的是A.同一类对象之间不可相互赋值B.可以使用对象数组C.对象可以用作函数参数D.一个对象可以用作另一个类的成员16.可用作C++语言用户标识符的ー组标识符是A.void,define,+WORDB.a3_b3,_123,YNC.fbr,-abc,CaseD.2a,DO,sizeof17.设函数int&index(inta.inti)返回数组a中下标为i的元素,如果在整型数组intarray[]={1,2,3},在执行index(array,1)+=3后,array中各元素值为A.{4,2,3}B.{1,5,3)C.{1,2,6}D.{4,5,6}18.对指针动态分配空间用的关键字是A.defineB.intC.newD.float19.ー个函数功能不太复杂,但要求被频繁调用,应选用B.重载函数A.内联函数C.递归函数D•嵌套函数20.在inta=3,*p=&a;中,*p的值是A.变量a的地址值B.无意义C.变量p的地址值D.3非选择题部分

88注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。二、填空题(本大题共20小题,每小题1分,共20分)19.默认参数是在中说明的,默认参数可以多于1个,但是必须放在参数序列的后部。20.类所声明的内容用括起来,之间的内容称为类体。21.执行代码doublepi=3.141592;cout«pi;程序的输出结果是〇22.在文件输入流类中,用于判断提取操作是否已达到文件尾的方法是。23.常量成员包括常量数据成员,静态常数成员,和。24.通过C++语言中的机制,可以从现存类中构建其子类。25.如果ー个函数直接或间接地调用自身,这样的调用称为调用。26.使用C++编译器对C++源程序进行编译产生文件的扩展名是。27.C++的类成员由数据成员和组成。28.C++面向对象程序设计的特点为:抽象,封装,继承和。29.C++标准库string类中用于在主串中检索所需字符串的成员函数是。30.C++中函数参数有两种传递方式:传值和。31.在删除ー个动态对象时,将自动调用该动态对象所属类的函数。32.在C++当中,类外的函数只能通过类的对象使用该类的。33.简单成员函数是指声明中不含const,volatile,关键字的函数。34.执行cout«char('a'+2)«endl:后的显示结果为〇35.假定类A有一个公有属性的静态数据成员b,在类外不通过对象名访问b的写法是36.拷贝构造函数使用作为参数初始化创建中的对象。37.一旦基类定义了虚函数,该基类的派生类中的也自动成为虚函数。38.在C++类中,有一种类不能生成对象只能被继承,称之为。三、改错题(本大题共5小题,每小题4分,共20分)下面的类定义中有一处错误,请写出错误所在行并给出修改意见。39.#includetemplateTminx(Tx,Ty){if(x>y)x=y;returnx;}voidmain()(inta;doubled;cout«minx(a,d)«endl;}42.#includeclassPeople{public:voidPeople。{}constintage()const{return15;}char*name。{retumMGreen";}voidmain。(constPeoples;inti=s.age();cout«Hage=,,«iclassA{public:voidshow(){cout«”classAshow"v〈endl;}};classB{

89public:voidshow。(cout«HclassBshowM«endl;}};classC:publicA,publicB{public:voidprint。{cout«"classCprintM«endl;}};voidmain(){Cc;c.show。;c.print();}44.#includeclassStudent{intx=0,y=0;public:Student。{x=l;y=l;)Student(inta,intb){x=a;y=b;voidget。{cout«x«HM«y«endl;}};intmain(){Studentstudent(5»6);student.get。;}45.#includeclassBase{public:virtualvoidfun()=0;};classTest:publicBase{public:virtualvoidfun(){cout«MTest.fun=M«endl;});voidmain(){Basea;Test*p;p=&a;\i四、完成程序题(本大题共5小题,每小题4分,共20分)46.在下面程序横线处填上适当内容,使程序执行结果为:40:15程序如下:#includetemplateTfiinc(Tx,Ty){iRsizeoRT)==8)return;elsereturn;}

90voidmain(){cout«func(8,5)«n:M«func(5.0,10.0)«endl;intd;cin»d:}45.在下面程序横线处填上适当内容,使程序执行结果为:x=0,y=0x=l,y=2x=10,y=20程序如卜:#includeclassSample)intx,y;public:Sample(){}Sample(){x=a;y=b;}voiddisp(){cout<disp();}46.在下面程序横线处填上适当内容,使程序执行结果为:n=30程序如ド:#includetemplateclassTest{Tn;public:Test(){}Test(Ti){n=i;}Test(constTest&s)(staticTesttemp;returntemp;)voiddisp(){cout«,'n=,,«n«endl;}};voidmain(){Testtl(4),t2(5),t3;t3=t1+t2;t3.disp();)47.在下面程序横线处填上适当内容,使程序执行结果为:n=2,sum=2n=3,sum=5n=5,sum=10

91程序如下:#includeclassTest{intn;staticintsum;public:Test(intx){n=x;}voidadd(){;}voiddisp()(cout«{,,n=,,«n«M,sum=M«sum«endl;int=0;voidmain(){Testa(2),b(3),c(5):a.add();a.disp();b.add();b.disp():c.add();c.disp();}45.在下面程序中的横线处填上适当内容,使程序完整#includeclassA(inti;public:intset(B&);intget(){returni;}A(intx){i=x;}};classB{inti;public:B(intx){i=x;}A;};intA::set(B&b){returni=b.i;}voidmain(){Aa(l);Bb(2);cout«a.get()«H,”;a.set(b);cout«a.get()«endl;}五、程序分析题(本大题共2小题,每小题5分,共10分)51.下面程序中A是抽象类,其输出是什么?#includeclassA{public:virtualvoidprintMe(){cout«MThisisclassAprinting.M«endl;};};classB:publicA{public:voidprintMe(){cout«"ThisisclassBprinting.M«endl;}};classC:publicB{public:voidprintMe(){cout«**ThisisclassCprinting.M«endh}};

92voidprint(Aa){a.printMe();|voidmain()(Bb;Cc;print(b);print(c);52.写出此程序的执行结果:#includetemplateTfiinc(Tx,Ty){iRsizeofTT)==8)returnx+y;elsereturnx*y;}voidmain(){cout«fiinc(8,5)«M:n«ftinc(5.0,10.0)«endl;intd;cin»d:)六、程序设计题(本大题共1小题,共10分)53.设计ー个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。有三个成员函数bankin。(处理存入账),bankout()处理取由账)和disp()(输出明细账)请完成函数的实现。本题程序如下:#include#include#defineMax100classBank(inttop;chardate[Max][10];〃日期intmoney[Max];〃金额intrest[Max];〃余额staticintsum;〃累计余额public:Bank(){top=0;}voidbankin(chard[],intm){…}voidbankout(chard[]»intm){…}voiddisp(){,•,);};全国2013年1月高等教育自学考试C++程序设计试题课程代码:04737请考生按规定用笔将所有试题的答案涂、写在答题纸上。选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。ー、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。1.下列不属于C++关键字的是

93A.externC.free2.C++中定义标准输入输出的库为A.stdioC.iostream3.My是一个类,则执行语句Mya[3],A.2C.44.下列语句错误的是A.intval(20);C.constintval;5.下列说法中,有关构造函数是正确的是A.任何ー类必定有构造函数C.构造函数不能重载6.下面关于类和对象说法不正确是A.类由数据与函数组成C.对象是类的实例7.下面选项中不是类成员函数的是A.构造函数B.goto0.defaultB.mathD.stdlib*p[2]之后,自动调用构造函数次数为B.3D.5B.externintval(20);□.externconstintval;B.可定义没有构造函数的类D.任何ー类必定有缺省的构造函数B.ー个对象必属于某个类D.ー个类的对象只有一个B.析构函数

94C.友元函数8.在C++中类之间的继承关系具有A.自反性C.传递性9.C++中类的成员默认为D.静态函数B.对称性D.反对称性A.publicC.protectedB.private0.static10.C++中要实现动态联编,调用虚函数时必须使用A.基类指针C.派生类指针11.下面对析构函数的正确描述是A.系统不能提供默认的析构函数C.析构函数没有参数12.在下面的二维数定义正确的是A.intary[5]口;C.intary[][5];13.以下说法中正确的是B.类名D.对象名B.析构函数必须由用户定义D.析构函数可以设置默认参数B.intary[][5]={{0,1,2}};D.intary[5,5];A.C++程序总是从第一个定义的函数开始执行B.C++程序总是从main函数开始执行C.C++中函数必须有返回值D.C++中函数名必须唯一14.对C++中主函数描述正确的是A.名称为main,可为多个C.名称为main,必须有且只能有一个15.下面声明纯虚函数语句正确的是A.voidfun()=0;C.virtualvoidfun();B.名称不限,可为多个D.名称不限,必须有且只能有一个B.virtualvoidfun()=0;D.virtualvoidfun(){};16.对于拷贝初始化构造函数和赋值操作的关系,正确的描述是A.拷贝初始化构造函数和赋值操作是完全ー样的操作B.进行赋值操作时,会调用类的构造函数C.当调用拷贝初始化构造函数时,类的对象正在被建立并被初始化D.拷贝初始化构造函数和赋值操作不能在同一个类中被同时定义17.使用重载函数的目的是A.共享函数数据C.优化运行效率B.减少代码量□.提高可读性18.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念19.假定有“char*p="Hello";",若要输出这个字符串的地址值正确的写法为A.cout«*p;C.cout«&p;B.cout«p;D.cout«(void*)p;20.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是A.公有类型C.保护类型B.私有类型D.友元类型

95非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。二、填空题(本大题共20小题,每小题1分,共20分)21.C++程序的编译是以为单位进行的。22.C++语言支持的两种多态性分别是编译时的多态性和的多态性。23.重载的运算符保持其原有的操作符个数、和结合性不变。24.在C++中,函数的参数有两种传递方式,它们分别是值传递和〇25.含有的类称为抽象类。26.C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和»27.对于无返回值函数,定义函数时要用修饰函数类型。28.定义重载函数必须在参数的个数或参数的上与其它同名函数不同。29.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是30.以面向对象方法构造的系统,其基本单位是。31.拷贝构造函数使用作为参数初始化创建中的对象。32.当一个成员函数被调用时,该成员函数的指向调用它的对象。33.类可将实现细节隐藏起来,这种机制称为。34.在面向对象的程序设计中,通过封装实现数据隐藏;通过实现代码的复用。35,在公有继承的中基类数据成员在派生类中的访问权限。36.复杂对象可以由简单对象构成,这种现象称为。37.如有“char*p="Heno";”,则语句“cout«*(p+l);”输出值是。38.基类和派生类的关系称为。39,在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具有双重作用:对于其派生类而言,是公有的;而对于其外部的程序而言,是。40.假定x=10,则表达式x<=10?20:30的值为。三、改错题(本大题共5小题,毎小题2分,共10分)下面的类定义中有一处错误,请写出错误所在行并给出修改意见41.#includeclasspoint{private:floatx»y;public:point(floata,floatb){x=a;y=b;}voidf(){x=0;y=0;}voidgetx(){cout«x«endl;}voidgety(){cout«y«cndl;}};main(){pointa(3.5);agetx()42.#includcmain(){intx=7;constint*p=&x;

96*p=99cout«*p«endl;}40.#includeclasstest{private:intx;y;public:voidinta,intb){x=a;y=b;}intmax(){retum(x>y)?x:y;});main(){testa;ag,3);cout«a.max()«endl;41.#includeclasstest{private:intx;public:test(inta){x=a;}voidset(inta){x=a;}voidget(){cout«x«endl;}};classtestl:publictest{private:intx;public:testl(inta){x=a;}voidset(inta){x=a;}voidget(){cout«x«endl;}};42.#includeclassf{private:intx,y;public:voidfl(inta,intb){x=a;y=b;}voidprint(){cout«x«M«y«endl;}};main(){fa;floatx=1.5y=2.0;a.fl(x,y);a.print();}四、完成程序题(本大题共5小题,每题4分,共20分)43.将下划线处缺少的部分写在“答题纸”上。源程序如下:#includeusingnamespacestd;classbaseinta,b;public:base(intx,inty){a=x;b=y;}voidshow()

97{cout«p.a«,,,,,«p.b«endl;voidmain(){baseb(78,87);b.show(b);40.将下划线处缺少的部分写在“答题纸”上。源程序如下:#include#includeusingnamespacestd;voidmain()(myf("ab.txt");//定义输出流文件,并初始化«"ThisiaaTXTfile";//向文件输入字符串myf.close();41.在下面程序中的下划线处填上适当的程序(答案写在“答题纸”上),使程序的输出结果如下:67,90源程序如下:#includeusingnamespacestd;classbase{private:intx,y;public:voidinitxy(inta,intb){x=a;y=b;}voidshow(base*p);1:inlinevoidbase::show()(cout«p->x«","«p->y«endl;}voidprint(base*p)(p->show(p);}voidmain()

98{basea;a.initxy(67,90);print();}49.下面程序给出了一个从普通的基类派生出ー个模板类的方法,在下划线处填上正确的部分(答案写在“答题纸‘’上)。#includeusingnamespacestd;classBase(public:Base(inta){x=a;}intGetx(){return;}voidshowb(){cout«x«endl;}private:intx;templateclassderived:publicBase|public:derived(Ta,intb):{尸a;}TGety(){returny;}voidshowd(){cout«y«nM«Getx()«endl;}private:voidmain(){BaseA(458);A.showb();derivedB“Itis”,l357);B.showd();}50.下面程序的运行结果如下:20,2260,22将下划线处缺少的部分写在“答题纸’‘上。源程序如下:#includeusingnamespacestd:classbaseprivate:constinta;staticconstintb;public:base(int);voidShow();};=22;;a(i){}//初始化

99voidbase::Show(){cout«a«,,,,,«b«endl;}voidmain()(baseal(20),a2(60);al.Show();a2.Show();)五、程序分析题(本大题共4小题,每小题5分,共20分)49.给出下面程序的输出结果#includeusingnamespacestd;classbase(intx;public:voidsetx(inta){x=a;}intgetx(){returnx;};voidmain(){int*p;basea;a.setx(15);p=newint(a.getx());cout«*p;}50.给出下列程序的输岀结果#include#include#includeusingnamespacestd;voidmain(){complexfsl(5,6);complexfs2(7.5,8.5);stringstrl(Hrealis:M);stringstr2(**imageis:");cout«strl«fsl.real()«\*«str2«fsl.imag()«endl;cout«strl«fs2.real()«\*«str2«fs2.imag()«endl;)51.给出下面程序的输出结果#includeusingnamespacestd;

100classbase(private:intx;public:voidsetx(inta){x=a;}intgetx(){returnx;}};voidmain()(basea,b;a.setx(89);b=a;cout«a.getx()«endl;cout«b.getx()«endl;}49.给出下面程序的输出结果#includcusingnamespacestd;voidmain()(intaL]={10,20,30,40),*pa=a;int*&pb=pa;pb++;cout«*pa«endl;}六、程序设计题(本大题共1小题,每小题10分,共10分)50.在字符串类string中实现ー个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词)#include#includeclassstr{strings;intn,a[100]j,l;public:str(string&a)(s=a;n=0;j=0;l=0;}・・・・test(....);int*geta(){returna;}

101请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返冋值类型)全国2013年10月高等教育自学考试C++程序设计试题课程代码:04737请考生按规定用笔将所有试题的答案涂、写在答题纸上。选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。ー、单项选择题(本大题共20小题,毎小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。1.下列不属于C++关键字的是A.externC.free2.C++中定义标准输入的库为A.stdioC.istream3.My是ー个类,则执行语句Mya[3],A.2B.34.下列语句错误的是A.intval(20);C.constintval;5.下列说法中,有关构造函数是正确的是A.任何ー类必定有构造函数C,构造函数不能重:载6.下面关于类和对象说法不正确是A.类由数据与函数组成C.对象是类的实例7.下面选项中不是类成员函数的是A.构造函数B.goto□.defaultB.mathD.stdlib*[2];之后,自动调用构造函数次数为C.4D.5B.externintval(20);D.externconstintval;B.可定义没有构造函数的类D.任何ー类必定有缺省的构造函数B.ー个对象必属于某个类D.ー个类的对象只有一个B.析构函数第91页共91页

102C.友元函数8.在C++中类之间的继承关系具有A,自反性C.传递性9.C++中类的成员默认为D.静态函数B.对称性D.反对称性A.publicC.protectedB.privateD.static10.C++中要实现动态联编,调用虚函数时必须使用A.基类指针C.派生类指针11.下面对析构函数的正确描述是A.系统不能提供默认的析构函数C.析构函数没有参数12.在下面的二维数定义正确的是A.intary[5][];C.intary[][5];B.类名D.对象名B.析构函数必须由用户定义D.析构函数可以设置默认参数B.intary[][5]={{0,1,2}};D.intary[5,5];13.以下说法中正确的是A.C++程序总是从第一个定义的函数开始执行B.C++程序总是从main函数开始执行C.C++中函数必须有返回值D.C++中函数名必须唯一14.对C++中主函数描述正确的是A.名称为main,可为多个C.名称为main,必须有且只能有一个15.下面声明纯虚函数语句正确的是B.名称不限,可为多个D.名称不限,必须有且只能有一个A.voidfun()=0;B.virtualvoidfun()=0;C.virtualvoidfiin();D.virtualvoidfun(){};16.对于拷贝构造函数和赋值操作的关系,正确的描述是A.拷贝构造函数和赋值操作是完全ー样的操作B.进行赋值操作时,不会调用类的构造函数C.当调用拷贝构造函数时,类的对象正在被建立并被初始化D.拷贝构造函数和赋值操作不能在同一个类中被同时定义17.使用重载函数的目的是A,共享函数数据C.优化运行效率B.减少代码量D.提高可读性18.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是

103A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念19.假定有“char*p="HeHo";”,若要输出这个字符串的地址值正确的写法为A.cout«*p;B.cout«p;C.cout«&p;D.cout«(void*)p;20.从本质上看,引用变量是被引用变量的A.拷贝B.别名C.复制D.克隆非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸匕不能答在试题卷上。二、填空题(本大题共20小题,每小题1分,共20分)21.C++程序的编译是以为单位进行的。22.C++语言支持的两种多态性分别是编译时的多态性和一的多态性。23.重載的运算符保持其原有的操作符个数、和结合性不变。24.在C++中,函数的参数有两种传递方式,它们分别是值传递和ー。25.含有的类称为抽象类。26.C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和。27.对于无返回值函数,定义函数时要用修饰函数类型。28.定义重载函数必须在参数的个数或参数的上与其它同名函数不同。29.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是。30.以面向对象方法构造的系统,其基本单位是。31.C++中定义友元函数使用的关键字为。32.当一个成员函数被调用时,该成员函数的指向调用它的对象。33.类可将实现细节隐藏起来,这种机制称为。34,在面向对象的程序设计中,通过封装实现数据隐藏;通过实现代码的复用。35.在公有继承的中基类数据成员在派生类中的访问权限ー。36.复杂对象可以由简単对象构成,这种现象称为。37.如有“char・『"Hello";”,则语句“cout«*(p+l);”输出值是。38.基类和派生类的关系称为〇39.C++对其对象的数据成员和成员函数的访问是通过一来限制的。40.假定x=10,则表达式xv=10?20:30的值为〇

104三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请在“答题纸’’上将错误所在行写出并给出修改意见。35.#includcclasspoint{private:floatx,y;public:point(floata,floatb){x=a;y=b;}voidf(){x=0;y=0;}voidgetx(){cout«x«endl;}voidgety(){cout«y«endl;}};main(){pointa(3.5);a.getx();}36.#includcmain(){intx=7;constint*p=&x;*p=99;cout«*p«endl;}37.#includeclasstest{private:intx;y;public:void出inta,intb){x=a;y=b;}intmax(){retum(x>y)?x:y;}};main(){testa;a.ロ1,3);cout«a.max()«endl;}38.#includeclasstest{private:intx;

105public:test(inta){x=a;}voidset(inta){x=a;}voidget(){cout«x«endl;}};classtestl:publictest{private:intx;public:testl(inta){x=a;}voidset(inta){x=a;}voidget(){cout«zr«endl;});35.#includeclassf{private:intx,y;public:fl(inta,intb){x=a;y=b;}voidprint(){cout«x«—«y«endl;}};main(){fa;floatx=1.0,y=2.0;a.fl(x,y);a.print();}四、完成程序题(本大题共5小题,每题4分,共20分)36.在答题纸上填上缺少的部分。源程序如下:#includeusingnamespacestd;classbaseinta,b;public:base(intx,inty){a=x;b=y;}voidshow(){cout«p.a«,,,"«p.b«endl;voidmain()

106baseb(78,87);b.show(b);)35.在答题纸上填上缺少的部分。源程序如下:#include#includeusingnamespacestd;voidmain(){myffab.txt”);〃定义输出流文件,并初始化«''ThisiaaTXTfile";〃向文件输入字符串myf.close();}36.在下面程序中的答题纸上填上适当的程序,使程序的输岀结果如下:67,90源程序如下:#includeusingnamespacestd;classbase{pnvate:intx,y;priblic:voidinitxy(inta,intb){x=a;y=b;}voidshow(base*p);};inlinevoidbase::show(){cout«p->x«tH,«p->y«endl;}voidprint(base*p)(p->show(p);

107voidmain()basea;a.initxy(67,90);print();}35.下面程序给出了一个从普通的基类派生出ー个模板类的方法,在答题纸上填上缺少的部分。#includeusingnamespacestd;classBase(public:Base(inta){x=a;}intGetx(){returnx;voidshowb(){cout«x«endl;}private:intx;):templateclassderived:publicBase{public:derived(Ta,intb):{尸a;}TGety(){returny;}voidshowd(){cout«y«HM«Gets()«endl;}private:voidmain()

108{BaseA(458);A.showb();derivedB("ItisH,1357);B.showd();35.下面程序的运行结果如下:20,2260,22在答题纸上填上缺少的部分。源程序如下:#includeusingnamespacestd;classbase(private:constinta;staticconstintb;public:base(int);voidShow();=22;:a(i){}〃初始化voidbase::Show(){cout<usingnamespacestd;

109classbase(intx;public:voidsetx(inta){x=a;}intgetx(){returnx;}voidmain()int*p;basea;a.setx(15);p=newint(a.getx());cout<<*p;}51.给出下面程序的输出结果//includeusingnamespacestd;classbase]private:intx;public:voidsetx(inta){x=a;}intgetx(){returnx;}レvoidmain(){basea,b;a.setx(89);b=a;cout<

110)六、程序设计题(本大题共10分)51.在字符串类string中实现ー个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词)#include#includeclassstr{strings;intn,a[100]j,1;public:str(string&a){s=a;n=0;j=0;l=0;},—test(.—);int*geta(){returna;}请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)全国2014年4月高等教育自学考试C++程序设计试题课程代码:04737请考生按规定用笔将所有试题的答案涂、写在答题纸上。选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。ー、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。1.下列关于类的权限描述错误的是A.类本身的成员函数可以访问自身的任何成员B.类的对象只能访问公有成员C.普通函数可以不通过对象直接访问类的公有成员D.ー个类可以包含另一个类的对象作为成员2.只能在自身类和子类成员函数中被访问,无法通过对象在类外访问的成员属于A.privateB.protectedC.publicD.publish3.面向对象中的“对象”是指A.行为抽象B.数据抽象C.行为抽象和数据抽象的统ーD.行为抽象和数据抽象的对立4.在类外定义成员函数时,::运算符两侧分别连接

111A.返回值类型函数名B.返回值类型类名C.函数名类名D.类名函数名1.设函数int&index(int*a,inti)返回数组a中下标为i的元素,如存在整型数组intArrayロ={1,2,3),在执行index(Array,2)++后,Array中各元素值为A.{0,1,2}B.{1,1,2}C.{1,2,4}D.{0,2,3}2.类构造函数定义的位置是A.类体内或体外B.只是在类体内C.只在类体外D.在类的成员函数中3.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置A.reverse(a,a+Len,Value);B.sort(a,a+Len,Value);C.find(a,a+Len,Value);D.copy(a,a+Len,Value);

1128.关于对象的性质,下列描述错误的是:A.同一类对象间可相互赋值C.对象不可以用作函数参数9.声明一个没有初始化参数的对象,需调用A.指定参数构造函数C.初始化函数10.下列运算符不能重载的是B.可以使用对象数组D.ー个对象可以用作另ー个类的成员B.拷贝构造函数D.默认构造函数A.!C.newB.sizeofD.delete11.如P是一指针类型表达式,则下列表达式中不是左值表达式的是A.PC.&PB.*PD.P+112.使用ド列流格式控制符能输出ー个换行符的是A.decC.hexB.octD.endl13.下列表达式,能将P声明为常量指针的是A.constint*P;C.constint*constP14.C++程序文件扩展名为A.,cppC..lib15.对C++中主函数描述正确的是A.名称为main,可为多个C.名称为main,必须有且只能有一个B.int*constP;D.int*PB..hD..objB.名称不限,可为多个D.名称不限,必须有且只能有一个16.假定有char*P="Hello";,耍输出这个字符串的地址值的正确写法是A.cout«*PC.cout«&P17.下列描述错误的是A.在没创建对象前,静态成员不存在B.静态成员是类的成员,不是对象成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员18.对于友元描述正确的是A.友元是本类的成员函数C.友元不是函数B.cout«PD.cout«(void*)PB.友元不是本类的成员函数D.以上皆不正确19.•个函数功能不太复杂,但要求频繁使用,则该函数适合作为A.内联函数C.递归函数20.下列默认参数的声明不正确的是A.intmax(inta,intb»intc»intd=0);B.intmax(inta,intb,intc=0,intd=0);B.重载函数D.嵌套函数C.intmax(inta=0»intb,intc=0»intd=0);D.intmax(inta,intb=0,intc=0,intd=0);非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸匕不能答在试题卷上.。

113二、填空题(本大题共20小题,每小题1分,共20分)21.C++程序的编译是以为单位进行的。22.默认参数是在中说明的,默认参数可以多于ー个。23.通过C++语言中的机制,可以从现存类中构建其子类。24.拷贝构造函数使用作为参数初始化创建中的对象。25.基类的公有成员在通过公有派生得到的子类中访问权限是。26.要关闭ー个输出流对象myFile,所用的C++语句是。27.执行下列代码:doublepi=3.1415926;cout«setprecision(5)«pi;程序的输出结果是。28.对象作为函数参数,就是将实参对象的传递给形参对象,这种传递是单向的。29.建立一个对象时,对象的状态是不确定的。为了使对象的状态确定,必须对其进行正确的。30.C++类中的函数在对象的生存期结束时被自动调用。31.C++语言中的整数常量有四种:十进制常量、长整型常量、ハ进制常量和。32.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为.33.声明一个常成员函数Fun,返回类型为char,第一个参数类型为int,第二个参数类型为double,则该函数的声明原型是.34.在C++语言中,利用向量类模板定义ー个具有20个血类型且初值为1的向量C,实现此操作的语句是。35.执行下列代码:inta=123,b=321:cout«setw(3)«a«b«endl:程序输出结果是:〇36.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的。37.vector类中用于返回向量中第一个对象的方法是〇38.C++语言中动态分配内存的关键字是。39.C++类成员的访问权限有、公有和保护三种。40.写出声明一个复数对象num的语句,并使对象被初始化为单精度2.2+13,此声明语句是〇三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请在答题纸上写出错误所在行并给出修改意见41.#includemain(){intx=5,y=6;constint*p=&x;*p=y;cout«*p«endl;42.#includeclassf{private:Tx,y;public:fl(Ta>Tb){x=a;y=b;}Tmax(){retum(x>y)?x:y;}};main(){fa;

114a.fl(1.5,3.8);cout«a.max()«endl;}21.#includeclasspoint{private:floatx,y;public:point(floata,floatb){x=a;y=b;}f(){x=0;y=0;}voidgetx(){cout«x«endl;}voidgety(){cout«y«endl;}};main(){pointa(3.5);a.getx();}22.#includeclassf{private:floatx,y;floatgct(){returnx+y;}public:fl(floata»floatb){x=a;y=b;}):main(){fa;a.fl(l,3.8);cout«a.gct()«endl;}23.#includeclasstestl{private:Intx;public:testl(){x=2;}voidset(inta){x=a;}voidget(){cout«x«endl;}classtest2{private:intx;public:test2(){x=3;}voidset(inta){x=a;}

115voidget(){cout«x«endl;}};classtest:publictestl,publictest2.{private:intx:public:voidset(inta){x=a;}voidgettest(){cout«x«endl:}};main(){testa;a.get();}四、完成程序题(本大题共5小题,每小题4分,共20分)21.完成下面类中的成员函数的定义。classpoint(private:intm»n;public:point(int,int);point(point&);3point::point(inta,intb){m=a;=b;}point::point()(m=t.m;n=t.n;}22.#includeusingnamespacestd;classbase(private:intx;public:base(inta){x=a;}intget(){returnx;}

116voidshowbase(){cout«"x=M«x«endl;}};classDerived:publicbase{private:inty;public:Derived(inta,intb):base(a){y=b;}voidshowderived(){cout«nx=H«get()«n,y=n«y«endl;}baseb(3);Derivedd(6,7);b.showbase();d.showderived();b.showbase();bl.showbase();base*pb=&bl;'pb->showbase();d.showderived();b.showbase();}输出结果如下:x=3x=6,y=7x=6x=6x=6x=6,y=7x=621.//include#includeusingnamespacestd;classcomplex(public:intreal:intimag;complex(intr=0,inti=0){real=r;imag=i;)卜complexoperator+(,complex&b)|

117intr=a.real+b.real:inti=a.imag+b.imag;return:}voidmain()(complexx(1,2),y(3,4),z;z=x+y;cout«z.real«M4-"«z.imag«Miu«endl;}21.下面程序的运行结果如下:ThisislinelThisisline2Thisisline3将下列程序补充完整,答案写在答题纸上。源程序如ド:#include#includeusingnamespacestd;voidmain()|fstreamfin,fbut;font.open(Hmy.txtM,ios::out);iff!fbut.is_open())return;fbr(inti=0;i<3;i=i+l)fbut«nThisislinen«i+l«endl;fbut.close();fin.open(nmy.txtM,ios::in);if(!fin.is_open())return;charstr[100];while()(fin.getline(str,100);cout«str«endl;}fin.close();}22.求两个浮点数之差的cha函数的原型声明、调用方法。#includeusingnamespacestd;voidmain()(floata,b;;〃函数cha的原型声明a=12.5;b=6.5;floatc=;〃调用函数chacout«c«endl;}floatcha(floatx,floaty)(floatw;w=x-y;returnw;}五、程序分析题(本大题共2小题,每小题5分,共10分)51.#lncludevoidfunc();voidmain()(fbr(inti=0;i<6;i-H-)(func();}}voidfunc(){intx=0;X-H-;staticinty=0;y-H-:COUtVV”X=”"XVV";y="«y«endl;}52.#includeclassA{public:A();voidShow();〜A();private:staticintc;};intA::c=O;A::A()(cout«nconstructor.M«endl;c+=10;}voidA::Show()(cout«nc=M«c«endl;}A::〜A()(cout«Hdestrucator.H«endl:voidmain()(Aa,b;a.Show();b.Show();|六、程序设计题(本大题共1小题,共10分)53,在三角形类tri实现两个函数,功能是输入三个顶点坐标判断是否构成等边三角形#inc1ude#includeclasspoint{pointprivate:floatx,y;

118public:fiffloata,floatb){x=a;y=b;}f(){x=0;y=0;}Voidset(floata,floatb){x=a;y=b;}floatgetx(){returnx;}noatgety(){returny;});classtri{pointx,y,z;floatsi,s2,s3;public....settri(....);/Z用于输入三个顶点坐标....test〃用于判断是否构成等边三角形};请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)全国2014年4月高等教育自学考试C++程序设计试题课程代码:04737请考生按规定用笔将所有试题的答案涂、写在答题纸上。选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。ー、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑.错涂、多涂或未涂均无分。1.下列关于类的权限描述错误的是A.类本身的成员函数可以访问自身的任何成员B.类的対象只能访问公有成员

119C.普通函数可以不通过对象直接访问类的公有成员D.ー个类可以包含另ー个类的对象作为成员2.只能在自身类和子类成员函数中被访问,A.privateC.public3.面向对象中的“对象”是指A.行为抽象C.行为抽象和数据抽象的统ー无法通过对象在类外访问的成员属于B.protected0.publishB.数据抽象D.行为抽象和数据抽象的对立4.在类外定义成员函数时,::运算符两侧分别连接A.返回值类型函数名C.函数名类名5.设函数int&index(int*a,inti)返回数组index(Array,2)++后,Array中各元素值为A.{0,1,2}C.{1,2,4}6.类构造函数定义的位置是A.类体内或体外C.只在类体外B.返回值类型类名D.类名函数名a中下标为i的元素,如存在整型数组intArray口={1,2,3),在执行B,{1,1,2}D.{0,2,3)B.只是在类体内D.在类的成员函数中7.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置A.reverse(a,a+Len,Value);C.find(a,a+Len,Value);8.关于对象的性质,下列描述错误的是:A.同一类对象间可相互赋值C.对象不可以用作函数参数B.sort(a,a+Len,Value);D.copy(a,a+Len,Value);B.可以使用对象数组D.ー个对象可以用作另ー个类的成员9.声明一个没有初始化参数的对象,需调用A.指定参数构造函数C.初始化函数10.下列运算符不能重载的是B.拷贝构造函数D.默认构造函数A.!C.newB.sizeofD.delete11.如P是一指针类型表达式,则下列表达式中不是左值表达式的是A.PC.&PB.*PD.P+112.使用下列流格式控制符能输出ー个换行符的是A.decC.hexB.octD.cndl13.下列表达式,能将P声明为常量指针的是A.constint*P;C.constint*constP14.CH程序文件扩展名为A.,cppC..lib15.对C++中主函数描述正确的是A.名称为main,可为多个C.名称为main,必须有且只能有一个B.int*constP;D.int*PB..hD..objB.名称不限,可为多个D.名称不限,必须有且只能有一个16.假定有char*P="Hello";,要输出这个字符串的地址值的正确写法是

120B.cout«PD.cout«(void*)PB.友元不是本类的成员函数D.以上皆不正确A.cout«*PC.cout«&P17.下列描述错误的是A.在没创建对象前,静态成员不存在B.静态成员是类的成员,不是对象成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员18.对于友元描述正确的是A.友元是本类的成员函数C.友元不是函数19.ー个函数功能不太复杂,但要求频繁使用,则该函数适合作为B.帀载函数D.嵌套函数A.内联函数C.递归函数20,下列默认参数的声明不正确的是A.intmax(inta,intb,intc>intd=0);1.1ntmax(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;cout«setprecision(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;cout«setw(3)«a«b«endl;程序输出结果是:〇36.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的〇37.vector类中用于返回向量中第一个对象的方法是.38.C++语言中动态分配内存的关键字是。

12121.C++类成员的访问权限有、公有和保护三种。22.写出声明一个复数对象num的语句,并使对象被初始化为单精度2.2+1.3i,此声明语句是«三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请在答题纸上写出错误所在行并给出修改意见23.#includemain(){intx=5,y=6;constint*p=&x;*p=y;cout«*p«endl;24.#includeclassf{private:Tx,y;public:fl(Ta,Tb){x=a;y=b;}Tmax(){retum(x>y)?x:y;}}:main(){fa;a.fl(1.5,3.8);cout«a.max()«endl;}25.#includeclasspoint{private:floatx,y;public:point(floata,floatb){x=a;y=b;}f(){x=0;y=0;}voidgetx(){cout«x«endl;}voidgety(){cout«y«endl;}卜main(){pointa(3.5);a.getx();}

12221.#includeclassf{private:floatx,y;floatgct(){returnx+y;}public:fl(floata,floatb){x=a;y=b;}main(){fa;a.fl(l,3.8);cout«a.get()«endl;}22.#includeclasstestl{private:Intx;public:testl(){x=2;}voidset(inta){x=a;}voidget(){cout«x«endl;}};classtest2{private:intx;public:test2(){x=3;}voidsct(inta){x=a;}voidget(){cout«x«endl;}};classtest:publictestl,publictest2.{private:intx;public:voidset(inta){x=a;}voidgettest(){cout«x«endl;}}:main(){testa;a.get();}四、完成程序题(本大题共5小题,每小题4分,共20分)23.完成下面类中的成员函数的定义。classpoint

123(private:intm,n;public:point(int,int);point(point&);卜point::point(inta,intb)(m=a;=b;}point::point()m=t.m;n=t.n;21.#includeusingnamespacestd;classbase{private:intx;public:base(inta){x=a;}intget(){returnx;}voidshowbase(){cout«Hx=n«x«endl;}}:classDerived:publicbase{private:inty;public:Derived(inta»intb):base(a){y=b;}voidshowderived(){cout«”x="vvget()vv”,y=M«y«endl;}}?voidmain(){baseb(3);Derivedd(6,7);b.showbase();d.showderived();

124b.showbase();bl.showbase();base*pb=&bl:'pb->showbasc();d.showderived();b.showbase();}输出结果如下:x=3x=6,y=7x=6x=6x=6x=6,y=7x=621.#include#includcusingnamespacestd: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;z=x+y;cout«z.realw"+"v〈z.imag«Hi,,«endl;}22.下面程序的运行结果如下:Thisislinel

125Thisisline2Thisisline3将下列程序补充完整,答案写在答题纸上。源程序如下:#include#includeusingnamespacestd;voidmain(){(streamfin,fbut;fbut.open(”my・txt”,ios::out);if(!fbut.is_open())return;fbr(inti=0;i<3;i=i+l)fbut«"Thisisline"«i+l«endl;fbut.close();fin.open("my.txt",ios::in);ifi(!fin.is_open())return;charstr[100];while()fin.getline(str,100);cout«str«endl;}fin.close();}21.求两个浮点数之差的cha函数的原型声明、调用方法。#includeusingnamespacestd;voidmain()(floata,b;;〃函数cha的原型声明a=12.5;b=6.5;floatc=;〃调用函数chacout«c«endl;}floatcha(floatx,floaty)(

126floatw;w=x-y;returnw;|五、程序分析题(本大题共2小题,每小题5分,共10分)21.#lncludevoidfunc();voidmain()(fbr(inti=O;i<6;i-H-)(fiinc();}}voidfiinc()(intx=0;X-H-;staticinty=0;y++;coutvぐX="VVXvv“;y=H«y«endl;22.#includeclassApublic:A();voidShow();〜A();private:staticintc;};intA::c=O;A::A()(cout«nconstructor.**«endl;c+=10;}voidA::Show()|cout«Mc=M«c«endl;}A:!〜A(){cout«Mdestrucator.H«endl:}voidmain()(Aa,b;a.Show();b.Show();}六、程序设计题(本大题共1小题,共10分)23.在三角形类tri实现两个函数,功能是输入三个顶点坐标判断是否构成等边三角形#include#includeclasspoint{pointprivate:floatx,y;public:f(floata,floatb){x=a;y=b;}){x=0;y=0;}Voidset(floata,floatb){x=a;y=b;}floatgetx(){returnx:}noatgety(){returny;}卜classtri{pointx,y,z;floatsi,s2,s3;public....settri(....);/Z用于输入三个顶点坐标....test(....);〃用于判断是否构成等边三角形};请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)*p=&base::num;*p=17;cout<

127basea,b;cout«**pくく","«a.hum«","«b.num;}47.在下面横线处填上正确的内容,完成类的定义。classBase(intx;staticconstintb;public:Base(int,int);constint&a;};b=15;Base::Base(inti,intj):48.完成下面程序中的show函数的定义,使其运行结果如下:InbaseInderived程序清单如下:ttincludeusingnamespacestd;classbase{pubhc:virtualvoidprint()(cout«"Inbase"«endl;});classderived:publicbase(public:voidprint(){cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭