完整版-04737C++历年真题与答案(2008-2014)-文档_第1页
完整版-04737C++历年真题与答案(2008-2014)-文档_第2页
完整版-04737C++历年真题与答案(2008-2014)-文档_第3页
完整版-04737C++历年真题与答案(2008-2014)-文档_第4页
完整版-04737C++历年真题与答案(2008-2014)-文档_第5页
已阅读5页,还剩216页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实用标准文档文案大全全国2008年10月高等教育自学考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.对C++语言和C语言的兼容性,描述正确的是()A.C++兼容C B.C++部分兼容CC.C++不兼容C D.C兼容C++2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是()A.cerr B.cinC.cout D.cfile3.对使用关键字new所开辟的动态存储空间,释放时必须使用()A.free B.createC.delete D.realse4.如没有使用private关键字定义类的数据成员,则默认为()A.private B.publicC.protected D.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);C.doubleFunc(double,double); D.doubleFunc(int,double);10.对类中声明的变量,下列描述中正确的是()A.属于全局变量B.只属于该类C.属于该类,某些情况下也可被该类不同实例所共享D.任何情况下都可被该类所有实例共享11.类的私有成员可在何处访问()A.通过子类的对象访问 B.本类及子类的成员函数中C.通过该类对象访问 D.本类的成员函数中12.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是()A.编译器总是自动创建一个不带参数的构造函数B.这个类没有构造函数C.这个类不需要构造函数D.该类不能通过编译13.一个类可包含析构函数的个数是()A.0个 B.1个C.至少一个 D.0个或多个14.this指针存在的目的是()A.保证基类公有成员在子类中可以被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类保护成员在子类中可以被访问D.保证基类私有成员在子类中可以被访问15.下列关于类的权限的描述错误的是()A.类本身的成员函数只能访问自身的私有成员B.类的对象只能访问该类的公有成员C.普通函数不能直接访问类的公有成员,必须通过对象访问D.一个类可以将另一个类的对象作为成员16.在编译指令中,宏定义使用哪个指令()A.#include B.#defineC.#if D.#else17.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是()A.A类构造函数先执行 B.成员构造函数先执行C.两者并行执行 D.不能确定18.下列描述错误的是()A.在创建对象前,静态成员不存在 B.静态成员是类的成员C.静态成员不能是虚函数 D.静态成员函数不能直接访问非静态成员19.对于友元描述正确的是()A.友元是本类的成员函数 B.友元不是本类的成员函数C.友元不是函数 D.友元不能访问本类私有成员20.在哪种派生方式中,派生类可以访问基类中的protected成员()A.public和private B.public和protectedC.protected和private D.仅protected二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.设要把一个文件输出流对象myFile与文件“f:\myText.txt相关联,所用的C++语句是:__________。22.C++中ostream类的直接基类是________。23.运算符[]只能用________运算符来重载,不能用友元运算符来重载。24.定义虚函数所用的关键字是________。25.vector类中用于返回向量中第1个对象的方法是________。26.在C++中,利用向量类模板定义一个具有20个char的向量E,其元素均被置为字符‘t’,实现此操作的语句是________。27.类的继承是指子类继承基类的________和成员函数。28.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为________。29.________指令指示编译器将一个源文件嵌入到带该指令的源文件之中。30.设类A有成员函数voidFun(void);若要定义一个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是:________。31.设在程序中使用如下语句申请了一个对象数组:Point*ptr=newPoint[2];则在需要释放ptr指向的动态数组对象时,所使用的语句是________。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的值为________。34.对象传送的消息一般由3部分组成:接收对象名、调用操作名和________。35.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的________。36.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是________。37.在C++中,声明布尔类型变量所用的关键字是________。38.执行下列代码inta=29,b=100;cout<<setw(3)<<a<<b<<endl;程序的输出结果是:________。39.执行下列代码cout<<″Hex:″<<hex<<255;程序的输出结果为________。40.C++语言中可以实现输出一个换行符并刷新流功能的操控符是________。三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.#include<iostream.h>main(){intx=5,y=6;constint*p=&x;*p=y;cout<<*p<<endl;}42.#include<iostream.h>classf{private:intx,y;public:f1(){x=0;y=0;}print(){cout<<x<<″<<y<<endl;}}main(){fa;a.f1(1,1);a.print();}43.#include<iostream.h>classf{private:intx=0,y=0;public:voidf1(inta,intb){x=a;y=b;}voidget(){cout<<x<<’<<y<<endl;}};main(){fa;a.f1(1,3);a.get();}44.#include<iostream.h>classpoint{private:floatx;public: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);}45.#include<iostream.h>template<classT>classf{private:Tx,y;public:voidf1(Ta,Tb){x=a;y=b;}Tmax(){retum(x>y)?x:y;}};main(){fa;a.f1(1.5,3.8);’cout<<a.x<<a.y<<a.max()<<endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)46.完成下面类中的成员函数的定义。classpoint{private:intm,n;public:point(int,int);point(point&);};point::point(inta,intb){m=a;________=b;}point::point(________){m=t.m;n=t.n;}47.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。#include<iostream>usingnamespacestd;________pi=3.14159;voidmain(){doubler;cout<<″r=″;___________;doublel=2.0*pi*r;doubles=pi*r*r;cout<<″\nThelongis:″<<l<<endl;cout<<″Theareais:″<<s<<endl;}48.在下划线处填上缺少的部分。#include<iostream>#include<fstream>usingnamespacestd;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.real<<″+″<<z.imag<<″i″<<endl;}49.程序的输出结果如下:1,950,30请根据输出数据在下面程序中的下划线处填写正确的语句。源程序如下:#include<iostream>usingnamespacestd;classbase{private: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]={1,9};cout<<a[0].get()<<″,″<<a[1].get()<<endl;cout<<ptr->get()<<″,″;ptr=ptr-1;cout<<________<<endl;delete[]ptr;}50.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。#include<iostream>usingnamespacestd;voidmain(){floata,b;________//函数cha的原型声明a=12.5;b=6.5;floatc=_________;//调用函数chacout<<c<<endl;}floatcha(floatx,floaty){floatw;w=x-y;returnw;}五、程序分析题(本大题共4小题,每小题5分,共20分)51.给出下面程序的输出结果。#include<iostream.h>template<classT>classSample{Tn;public:Sample(Ti){n=i;}intoperator==(Sample&);};template<classT>intSample<T>::operator==(Sample&s){if(n==s.n)return1;elsereturn0;}voidmain(){Sample<int>sl(2),s2(3);.cout<<″s1与s2的数据成员″<<(sl==s2?″相等″:″不相等″)<<endl;Sample<double>s3(2.5),s4(2.5);cout<<″s3与s4的数据成员″<<(s3==s4?″相等″:″不相等″)<<endl;}52.给出下面程序的输出结果。#include<iostream>usingnamespacestd;template<classT>Tmax(Tml,Tm2){return(m1>m2)?ml:m2:}voidmain(){cout<<max(1,7)<<″\t″<<max(2.0,5.0)<<endl;cout<<max(′y′,′b′<<″\t″<<max(″A″,″a″)<<endl;}53.给出下面程序的输出结果#include<iostream>usingnamespacestd;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;}54.给出下面程序的输出结果。include<iostream>#include<string>usingnamespacestd;classBook{char*title;char*author;intnumsold;public:Book(){}Book(constchar*strl,constchar*str2,constintnum){intlen=strlen(strl);title=newchar[len+1];strcpy(title,str1);len=strlen(str2);author=newchar[len+1];strcpy(author,str2);numsold=num;}voidsetbook(constchar*str1,constchar*str2,constintnum){intlen=strlen(str1);title=newchar[len+1];strcpy(title,str1);len=strlen(str2);author=newchar[len+1];strcpy(author,str2);numsold=num;}~Book(){deletetitle;deleteauthor;}voidprint(ostream&output){output<<″书名:″<<title<<endl;output<<″作者:″<<author<<endl;output<<″月销售量:″<<numsold<<endl;}.};voidmain(){Bookobj1(″数据结构″,″严蔚敏″,200),obj2;obj1.print(cout);obj2.setbook(″C++语言程序设计″,″李春葆″,210);obj2.print(cout);}六、程序设计题(本大题共1小题,共10分)55.在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形#include<iostream.h>#include<math.h>classpoint{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;floats1,s2,s3;public;...settri(....);//用于输入三个顶点坐标....test(....);//用于判断是否构成三角形};请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)2009年1月高等教育自学考试全国统一命题考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.C++源程序文件扩展名为()A..cpp B..hC..1ib D..obj2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是()A.cerr B.cinC.cout D.cfile3.包含自定义头文件file.h的预处理指令是()A.#define<file.h> B.#includefile.hC.#definefile.h D.#include"file.h"4.用于标识十六进制前缀或后缀是()A.元 B.后缀L或eC.前缀零 D.前缀0x5.设存在整型变量intx,则下列句与其它三项含义不同的是()A.int*p=&x; B.int&p=x;C.int&p=x; D.int&p=x;6.在定义类成员时,为产生封装性,则需使用哪个关键字()A.public B.publishC.protected D.private7.设函数voidswap(int&,int&)将交换两形参的值,如两整型变量inta=10;intb=15;则执行swap(a,b)后,a、b值分别为()A.10,10 B.10,15C.15,10 D.15,158.函数默认参数在函数原型中说明,默认参数必须放在参数序列的()A.前部 B.中部C.后部 D.两端9.设存在函数intmin(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是()A.intm=min(min(15,26),min(15,47));B.intm=min(15,26,47);C.intm=min(15,min(47,26));D.intm=min(min(47,26),16);10.下列函数不能和函数voidprint(char)构成重载的是()A.intprint(int); B.voidprint(char,char);C.intprint(char); D.voidprint(int,int);11.在下列成对的表达式中,运算结果类型相同的一对是()A.7/2和7.0/2.0 B.7/2.0和7/2C.7.0/2和7/2 D.7.0/2.0和7.0/2l2.内联函数的特点是()A.减少代码量,加快访问速度 B.减少代码量,减缓访问速度C.增加代码量,减缓访问速度 D.增加代码量,加快访问速度13.类的私有成员可在何处被访问()A.本类的成员函数中 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.#include B.#defineC.#else D.#pragma18.关于类的静态成员函数描述错误的是()A.在创建对象前不存在 B.不能说明为虚函数C.不能直接访问非静态函数 D.不是对象的成员l9.如果类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+1.3i,此声明语句是______。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;程序输出结果是______。三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.#include<iostream.h>classf{private:floatx,y;public:f(floata,floatb){x=a;y=b;}floatmax(){return(x<y)?x:y;}//求最大值};main(){fa(1.5,3.8);cout<<a.max()<<endl;}42.#include<iostream.h>classtest{private:intx;public:test(inta){x=a;}voidset(inta){x=a;}voidget(){cout<<x<<endl;}}main(){consttesta(3);a.set(5);a.get();}43.#include<iostream.h>classpoint{private:floatx,y;public:f1(floata,floatb){x=a;y=b;}point(){x=0;y=0;}voidgetx(){cout<<x<<endl;}voidgety(){cout<<y<<endl;}};voidprint(pointa){cout<<a.x<<endl;}main(){pointa;a.f1(3.0,5.0);print(a);}44.#include<iostream.h>classf{private:intx,y;public:fl(inta,intb){x=a;y=b;}voidprint(){cout<<x<<y<<endl;}};main(){fa;a.f1(1.5,1.8);a.print();}45.#include<iostream.h>main(){intx=6;constint*p=x;cout<<*p<<endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)46.完成下面程序,使其输出l0,并在退出运行时正确释放分配给指针的存储空间。#include<iostream>usingnamespacestd;voidmain(){int*a,*p;a=newint(10);p=______;cout<<*p<<endl;__________}47.#include<iostream>usingnamespacestd;classbase{private:intx;public:base(inta){x=a;}intget(){returnx;}voidshowbase(){cout<<"x="<<x<<endl;}};classDerived:publicbase{private:inty;public:Derived(inta,intb):base(a){y=b;}voidshowderived(){cout<<"x="<<get()<<",y="<<y<<endl;}};voidmain(){baseb(3);Derivedd(6,7);b.showbase();d.showderived();________; b.showbase();________;b1.showbase();base*pb=&bl;pb—>showbase(); d.showderived(); b.showbase();}输出结果如下:x=3x=6,y=7x=6x=6x=6x=6,y=7x=648.下面程序的运行结果如下:B::display()C::display()在下划线处填上缺少的部分。源程序如下:#include<iostream>usingnamespacestd;classB{public:______display(){cout<<"B::display()"<<endl;}};classC:publicB{public:_______display(){cout<<"C::display()"<<endl;}};voidfun(B*p){p—>display();}voidmain(){Bb,*pb;Cc;pb=&b;fun(pb);pb=&c;fun(pb);}49.下面程序的运行结果如下:Thisisline1Thisisline2Thisisline3在下划线处填上缺少的部分。源程序如下:#include<iostream>#include_____usingnamespacestd;voidmain(){fstreamfin,fout;fout.open("my.txt",ios::out);if(!fout.is_open())return;for(inti=0;i<3;i=i+1)fout<<"Thisisline"<<i+1<<endl;fout.close();fin.open("my.txt",ios::in);if(!fin.is_open())return;charstr[100];while(______){fin.getline(str,100);cout<<str<<endl;}fin.close();}50.在下划线处填上缺少的部分。源程序如下:#include<iostream>usingnamespacestd;________Tfun(Tx){______y;y=x*x-T(5);returny;}voidmain(){floata=2;cout<<fun(a);}五、程序分析题(本大题共4小题,每小题5分,共20分)51.请写出myTextl.txt文本文件中的内容#include<iostream>#include<string>usingnamespacestd;#include<fstream>voidmain(){ofstreammyFile1;myFilel.open("myTextl.txt");cout<<"EnterthedatainChineseformat(e.g.,2008,May25):"<<endl;stringDate("2008,January1");stringYear=Date.substr(0,4);intk=Date.find(",");inti=Date.find("");stringMonth=Date.substr(k+l,i-k-1);stringDay=Date.substr(i+1,2);stringNewDate=Day+""+Month+""+Year;myFilel<<"originaldate:"<<Date<<endl;myFile1<<"Converteddate:"<<NewDate<<endl;myFilel.close();}52.给出下面程序的输出结果#include<iostream>usingnamespacestd;classSimple{intx,y;public:Simple(){x=y=0;}Simple(inti,intj){x=i;y=j;}voidcopy(Simple&s);voidsetxy(inti,intj){x=i;y=j;}voidprint(){cout<<"x="<<x<<",y="<<y<<endl;}};voidSimple::copy(Simple&s){x=s.x;y=s.y;}voidfunc(Simples1,Simple&s2){s1.setxy(30,40);s2.setxy(70,80);}voidmain(){Simpleobj1(1,2),obj2;obj2.copy(obj1);func(obj1,obj2);obj1.print();obj2.print();}53.给出下面程序的输出结果#include"iostream.h"intmain(){inti=17;while(i>=10)if(--i%4==3)continue;elsecout<<"i="<<i--<<endl;}54.给出下面程序的输出结果#include<iostream>usingnamespacestd;voidmain(){intnum=300;int&ref=num;cout<<ref;ref=ref-100;cout<<""<<num;num=num-50;cout<<""<<ref<<endl;}六、程序设计题(本大题共1小题,共10分)55.定义堆栈类模板Stack(先进后出),栈的大小由使用者确定。要求该类模板对外提供如下二种基本操作:(1)push入栈(2)pop出栈,用数组来实现#include<iostream>usingnamespacestd;template<classT,intsize>classStack{Tx[size];intcurrent;public:Stack(){current=0;}....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.用于包含C++标准库iostream的预处理指令是()A.#define<iostream> B.#include<iostream>C.#define‘iostream’ D.#include‘iostream’4.无类型标识符是指()A.void B.boolC.short D.long5.从本质上看,引用是被引用变量的()A.拷贝 B.别名C.复制 D.克隆6.下面关于数组的初始化正确的是()A.charstr[]={'a','b','c'}; B.charstr[2]={'a','b','c'};C.charstr[1][2]={{'a','b'},{'e','d'}}; D.charstr[][]={'a','b','c'};7.C++类中定义的成员默认访问属性为()A.public B.privateC.protected D.friend8.决定C++语言中函数的返回值类型的是()A.return语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型9.函数int&min(int&,int&)返回参数中较小者,设有两整型变量inta=10;intb=15;在执行语句min(a,b)--;之后,a,b值分别为()A.9,14 B.9,15C.10,14 D.10,1510.声明函数为内联函数时所使用的关键字为()A.const B.inlineC.short D.signed11.函数intsum(inta=l,intb=1,intc=3)可与下列哪个函数同时声明()A.doublesum(int); B.charsum(int,int);C.intsum(double); D.intsum(int,int,int);12.函数模板template<typenameT>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.#if B.#elseC.#endif D.#error17.类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x的值为()A.未初始化 B.等于a.xC.等于0 D.随机18.使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是()A.strlen() B.strcap()C.strcat() D.strcmp()19.基类中的public成员,通过public派生,其在派生类中的访问权限为()A.不可访问 B.privateC.protected D.public20.不同对象调用同名函数,但导致完全不同行为的现象称为()A.抽象 B.封装C.继承 D.多态性二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.在C++语言的面向对象设计框架中,_______是程序的基本组成单元。22.执行代码doublepi=3.1415192;cout<<setprecision(3)<<pi;程序的输出结果是_______。23.C++语言提供的的基本控制结构可以分为3种类型:顺序结构、_______和循环结构。24.要使用STL库提供的对数组进行降幂排序算法,在源程序中需要包含的头文件是______。25.在C++标准库中,用_______类来表示复数。26.将对象作为函数参数,是将实参对象的_______传递给形参对象,这种传递是单向的。27.C++函数的返回类型可以是除数组与_______以外的任何类型。28.能提供封装的C++关键字是_______。29.在C++的类声明中,用public关键字声明的类成员的访问权限是_______。30.开发一个C++语言程序的步骤通常包括编辑、_______、连接、运行和调试。31.C++类中的_______函数在对象的生存期结束时被自动调用。32.友元函数可以存取类的_______、公有成员和保护成员。33.若类的成员函数用关键字static进行修饰,这样的成员函数称为_______。34.在C++中,创建派生类对象时,总是先从_______的初始化开始的。35.类的继承是指派生类继承基类的数据成员和_______。36.在C++中,利用向量类模板定义一个具有20个double的向量,其元素均被置为0.5,实现此操作的语句是_______。37.vector类中用于返回向量中的最后一个对象的方法是_________。38.虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数声明时应使用_______关键字。39.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的_______特性。40.执行下列代码cout<<showpoint<<123.0;程序的输出结果是_______。三、改错题(本大题共5小题,每小题4分,共20分)下面的每个程序都有一处错误,请用下横线标出错误所在行并给出修改意见。41.#include<iostream>usingnamespacestd;intmain(){intnum;max=10;num=1while(num<max)num++;cout<<″Num=″<<num;return0;}42.#include<iostream>usingnamespacestd;classA{voidshow(){cout<<″Hello!″;}};intmain(){Aa;a.show();return0;}43.#include<iostream>usingnamespacestd;intmain(){constintnum=20;intscores[num];for(inti=1;i<=num;i++){scores[i]=i;}return0;}44.#include<iostream>usingnamespacestd;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);cout<<″Max=″<<m.max()<<endl;}45.#include<iosiream>usingnamespacestd;classA{public:charname[255];private:char*getName(){returnname;}};classB:publicA{public:B(char*n){strcpy(name,n);}};voidmain(){Bb(″Hello!″);cout<<″Name:″<<b.getName();}四、完成程序题(本大题共5小题,每小题4分,共20分)46.将下面程序补充完整,使程序输出结果为:BeginWelcomeShowEnd程序如下:#include<iostream>usingnamespacestd;classA{public:__________{cout<<″Begin″<<endl;}voidshow(){cout<<″Show″<<endl;}___________{cout<<″End″<<endl;}};Aobject;intmain(){cout<<″Welcome″<<endl;object.show();return0;}47.请将下面程序补充完整,使程序可以正常打印9×9乘法口诀。#include<iostream>usingnamespacestd;classA{private:inta;intb;public:__________{a=x;b=y;}voidset(intx,inty){a=x;b=y;}voiddisplay(){cout<<a<<*′<<b<<′=′<<a*b;}};intmain(){Aa(1,1);for(inti=1;i<=9;i++){for(intj=1;____;j++){a.set(j,i);a.display();cout<<″″;}cout<<endl;}return0;}48.将下面程序补充完整,使程序可以输入学生信息并计算平均成绩。#include<iostream>#include<string.h>usingnamespacestd;classStudent{private:charname[255];intscore[10];public:Student(charn[],ints[]){___________;for(inti=0;i<10;i++){score[i]=s[i];}}voidShow(){intsum=0;for(inti=0;i<10;i++){_______________;}cout<<″名字:″<<name<<″,平均成绩:″<<sum/10;}};voidmain(){charname[255];intscore[10];cout<<″姓名:″;cin>>name;for(inti=0;i<10;i++){cout<<″成绩″<<i+l<<″:″;cin>>score[i];}Students(name,score);s.Show();}49.将下面程序补充完整,使程序可以正常运行,并释放内存。#include<iostream.h>_______classA{private:T*data;intlength;public:A(intlen){length=len;data=newT[len];}~A(){_________}T&operator[](inti){returndata[i];}};intmain(){A<int>obj(2);obj[0]=1;obj[1]=2;cout<<obj[0]<<endl;cout<<obj[1]<<endl;return0;}50.将下面程序补充完整,使程序运行结果为:C1assAClassB程序如下:#include<iostream.h>#include<string.h>classA{public:virtualvoidGetA()=0;};classB:publicA{private:charstr[32];public:voidGetA(){cout<<″ClassA″<<endl;}constchar*GetB(){_____}B(char*s){strcpy(str,s);}};voidmain(){A*a;Bb(″ClassB″);a=_________;a->GetA();cout<<b.GetB()<<endl;return;}五、程序分析题(本大题共2小题,每小题5分,共10分)51.#include<iostream>usingnamespacestd;intmain(){inti,j;for(i=l;i<=4;i+=1)for(j=2;j<=4;j+=j){if(i+j<5)cout<<″+″;elsecout<<″*″;}return0;}52.#include<iostream>usingnamespacestd;classA{inta;public:A(intaa=0){a=aa;}~A(){cout<<″DestructorA!″<<a<<endl;}};classB:publicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;}~B(){cout<<″DestructorB!″<<b<<endl;}};voidmain(){Bx(5),y(6,7);}六、程序设计题(本大题10分)53.下面Shape类是一个表示形状的抽象类,Area()为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。形状的抽象类声明如下:classShape{public:virtualdoubleArea()=0;};2010年1月高等教育自学考试全国统一命题考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.在C++中,头文件扩展名为()A..cpp B..hC..1ib D..obj2.下列符号中,不属于分隔符的是()A., B./C.; D.{}3.可替换#definePI3.1415926的语句是()A.floatPI3.1415926; B.constfloatPI=3.1415926;C.constPI(3.1415926); D.const3.1415926;4.布尔类型标识符是()A.void B.shortC.long D.bool5.下列不是C++语言的基本数据类型的是()A.字符类型 B.整数类型C.逻辑类型 D.枚举类型6.C++允许在结构中定义函数,这些函数称为()A.静态函数 B.构造函数C.析构函数 D.成员函数7.设函数voidinc(int)将形参加1,如有整型变量inti=10;则执行inc(i);后,i的值为()A.9 B.10C.11 D.未知8.下列哪种默认参数的声明是不正确的()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);9.设int&max(int&,int&)返回两参数中较大者,如有两整型变量inta=10;intb=15;在执行max(a,b)++后,a,b值分别为()A.10,15 B.11,15C.10,16 D.1l,1610.包含哪种语句的函数不能声明为内联函数()A.循环 B.变量自增自减C.if...else… D.变量声明11.定义函数模板中使用的参数类型标识符需使用下列哪组符号括起来()A.<> B.“”C.() D.{}12.一个类拥有多个构造函数,则这些构造函数间为()A.重载关系 B.重复关系C.拷贝关系 D.无关系13.对于拷贝构造函数point::point(point&p),下列说明正确的是()A.该函数只能访问P的私有成员 B.该函数不能访问P的公有成员C.该函数可以访问P的私有和公有成员 D.该函数不能访问P的成员14.使用delete[]删除对象数组时,描述正确的是()A.数组中各元素都调用析构函数 B.数组中各元素都调用构造函数C.不调用析构函数 D.只有首元素调用析构函数15.下列哪个指令属于条件编译指令()A.#elif B.#errorC.#pragma D.#include16.设类Test中存在成员staticintx,则下列哪种初始化方式是正确的()A.Test::intx=25; B.intx=25;C.intTest::x=25; D.intTestx=25;17.下列关于友元的描述错误的是()A.成员函数不可作友元 B.类可以作友元C.普通函数可以作友元 D.静态函数可以作友元18.在继承中,派生类拥有的基类个数为()A.0个 B.1个C.多个 D.至少1个19.基类中的protected成员,通过public派生,其在派生类中的可见性为()A.不可访问 B.privateC.protected D.public20.下列哪个不是面向对象的关键要素()A.抽象性 B.结构性C.封装性 D.多态性二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.在STL库中用于实现数组内容反转的函数是______。22.若要使用C++标准类库,需要指定相应的命名空间,所用的语句是______。23.C++语言中的整数常量有4种描述类型:十进制常量、长整型常量、八进制常量和______。24.声明一个名为a的整型引用变量所使用的语句是______。25.重载的运算符仍保留原有的优先级、______和语法结构。26.执行代码intb=100;cout<<hex<<b:程序的输出结果是______。27.带有纯虚函数的类称为抽象类,它只能作为______来使用。28.使用______作为函数参数,实参对象和形参对象代表同一对象,改变形参对象的值就是改变实参对象的值。29.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为______。30.如果一个模板声明列出多个参数,则多个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字______。31.C++类的构造函数名与______名称一样,且没有返回值。32.C++规定,当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参数是一个指向调用该函数的对象的指针,该指针被称为______指针。33.声明一个常成员函数Fun,其返回类型为char,第一个参数类型为int,第二个参数类型为double,函数Fun的声明原型是______。34.C++语言中的“聚合”隐含了两种实现方式,一种是______,另一种是用一个类的对象作为一种广义的数据类型来定义整体对象的一个属性。35.简单成员函数是指声明中不含const、______和static关键字的函数。36.在派生类中继承的基类成员的初始化,需要由派生类的构造函数调用基类的______来完成。37.在C++中,利用向量类模板定义一个具有20个int的向量,其所有元素被置为1,实现此操作的语句是______。38.vector类中用于获取无需再次分配内存就能容纳的对象个数的方法是______。39.动态联编是程序运行到需要的语句处才动态确定的,这称为______多态性。40.C++重载“=”运算符的函数名是______。三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见41.#include<iostream.h>#definePI3.14;voidmain(){doublei;intr;cout<<″输入圆形半径:″;cin>>r;i=2*PI*r;cout<<″圆形周长=″<<i<<endl;i=PI*r*r;cout<<″圆形面积=″<<i<<endl;}42.#include<iostream.h>classA{private:intx,y;public:A(inta=0,b=1);voidShow();};A::A(inta,intb){x=a;y=b;}voidA::Show(){cout<<″x=″<<x<<endl;cout<<″y=″<<y<<endl;}43.#include<iostream.h>classA{unsignedcharvar;public:A(unsignedcharx){var=x:}voidprint(){cout<<″var=″<<var;}};voidmain(){Aa(″x″);a.print();}44.#include<iostream.h>classClass{public:voidprint(inta,intb){cout<<″int:″<<a<<endl;cout<<″int:″<<b<<endl;}voidprint(char*a,char*b){cout<<″string:″<<a<<endl;cout<<″string:″<<b<<endl;}voidprint(char*a,unsignedintb){cout<<″string:″<<a<<endl;cout<<″int:″<<b<<endl;}};voidmain(){Classcls;cls.print(10,20);cls.print(′c′,1);cls.print(′x′,′y′);cls.print(″Hello!″,0);}45.#include<iostream.h>classClass{private:intval;public:voidfunc(inta){val=a;}};voidmain(){Class*cls;cls->func(10);}四、完成程序题(本大题共5小题,每题4分,共20分)46.将下面程序补充完整,使程序计算100以内所有可被7整除的自然数之和。#include<iostream.h>voidmain(){intx=1;intsum=0;while(true){if(x>100){______;}if(______){sum=sum+x;}x++;}cout<<sum<<endl;}47.将下面程序补充完整,使程序执行结果为9。#include<iostream.h>classClass{public:______{x=a;}______{returnx*x;}private:intx;};voidmain(){Classa(3);cout<<a.get()<<endl;}48.将下面程序补充完整,使程序正确的初始化私有变量var及释放资源。classClass{private:int*var;public:Class(intnum);~Class();};Class::Class(intnum){_______;}Class::~Class(){_______;}49.将下面程序补充完整,使程序的输出结果为:ClassA::PrintClassB::Print程序如下:#include<iostream.h>classBase{public:virtualvoidPrint()const{cout<<″Base::Print″<<endl;}};classClassA:publicBase{public:voidPrint()const{cout<<″ClassA::Print″<<endl;}};classClassB:publicBase{public:voidPrint()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论