《c++等级考试复习题.docx》由会员分享,可在线阅读,更多相关《c++等级考试复习题.docx(17页珍藏版)》请在课桌文档上搜索。
1、C+等级考试复习一、选择题1.(2001年秋)设有说明:intx=10,y=4,f;floatm;执行表达式f=m=xy后,那么f、m的值分别为。A.2,2.5B.3,2.5C.2.5,2.5D.2,2.02. (2003秋)设有说明语句:chars=n123n89TSiZeof(三)的值是。A.2B.9C.11D.153. (2002年春)实型变量X的取值范围为闭区间或开区间(15,34),那么正确表示X取值范围的逻辑表达式是。A.-2=x=1015x40B.(-2=x&x=10)|(15x&x34)C.-2=x=10&15x40D.(-2=x&x=10)&(15x&x34)4. (2003
2、秋)设X为整数,C+中能正确地表达数学式OWxv5的是。A,0=x=0x5D.!(x=5)5. (2009年春)以下关于break语高的描述中,不正确的选项是。A. break语句可用在循环语句中,其作用是完毕本层循环的执行B. break语句可用SWitCh语句中,其作用是完毕该SWitCh语句的执行C. break语句可用if语句中,其作用是完毕该if语句的执行D. break语句在同一循环体中可以屡次使用6. (2011秋)C+的break语句。A.用在能出现语句的任意位置B.只能用在循环体内C.只能用在循环体内或switch语句中D.能用在任一复合语句中7. (2003秋)以下四组函数
3、原型说明中,满足C+函数重载规那么的是。A.floatf(floatx);voidf(floaty);8. floatf(floatx);voidf2(floatXjIOaty);9. floatf(floatx,inty);voidf(floaty);10. floatf(floaty);floatf(floaty);8.(2005秋)函数重载是指。A.函数名一样,但函数的参数个数不同或参数的类型不同B.函数名一样,但函数的参数个数不同或函数的返回值的类型不同C.函数名不同,但函数的参数个数和参数的类型一样D.函数名一样,但函数的参数类型不同或函数的返回值的类型不同9.(2011春)下述关于
4、函数重载的描述中,不正确的选项是。但形参的个数不同各函数的返回值的类型必须不同 形参的个数一样但类型不同 形参的个数不同或类型不同A.两个或两个以上的函数取一样的函数名,B.两个或两个以上的函数取一样的函数名,C.两个或两个以上的函数取一样的函数名,D.两个或两个以上的函数取一样的函数名,10. (2012春)C+中,函数重载是指两个或两个以上的函数,其函数名。A.不同,但形参的个数或类型一样B.一样,但返回值类型不同C.一样,但形参的个数或类型不同D.一样,形参的个数一样,但其类型不同11. (2002秋)以下关于类的构造函数和析构函数的表达中,不正确的选项是。A.类的析构函数可以重载B.类
5、的构造函数可以重载C.定义一个类时可以不显式定义构造函数D.定义一个类可以不显式定义析构函数12. (2003春)以下有关对象的表达中,不正确的选项是。A.产生对象时必定要调用构造函数B.撤消对象时必定要调用析构函数C.对象被保护,其私有成员不能任意访问D.对象可以没有构造函数或析构函数13.(2011春)以下有关this指针的表达中,不正确的选项是。A.当调用对象的非静态成员时,总存在一个this指针B.非静态成员函数调用类中的成员时,可直接使用this指针C.this指针隐含地指向要用到的当前对象D.静态成员函数也存在this指针14. 12(HO春)类的成员函数中,没有this指针的是。
6、A.构造函数B.析构函数C.虚函数D.静态成员函数15. (2003秋)下面有关运算符重载的表达中,正确的选项是。A.非静态成员函数重载运算符时带有this指针B.友元函数重载运算符时带有this指针C.成员函数与友元函数重载运算符时都不带有this指针D.用成员函数或友元函数重载同一运算符时,两者的参数类型与参数个数一样16. (2004春)以下有关析构函数的表达中,正确表达的是。A.析构函数可以有一个或多个参数B.可以重载析构函数C.析构函数可以定义为虚函数D.必须显式地自定义析构函数17. (2004春)下面有关基类与其派生类的的表达中,正确的选项是。A.派生类对象不能赋给基类对象B.派
7、生类对象的地址不能赋给其基类的指针变量C.基类对象不能赋给派生类对象D.基类对象的地址能赋给其派生类的指针变量18. (2006秋)以下关于赋值兼容规那么的表达中,不正确的选项是。A,派生类的对象可以赋值给基类的对象B.基类的对象可以赋值给派生类的对象C.派生类的对象可以初始化其基类的引用D.可以将派生类对象的地址赋值给其基类的指针变量19. (2On秋)在C+中,没有this指针的函数是。A.静态成员函数B.构造函数C.析构函数D.非静态的内联成员函数20. (2011秋)以下关于C+类的表达中,不正确的选项是。A.类可以动态地描述和动态地产生B.虚基类可以解决多重继承中的二义性C类是具有一
8、样行为的假设干对象的统一抽象D.类是创立对象的一个模板二、填空题1.、(2006秋)当一个类的非静态成员函数被调用时,该成员函数的指向调用它的对象。2. (2008春)在C+中,重载赋值运算符和下标运算符“等只能用实现,而重载插入运算符“vv和提取运算符“等只能用实现。(成员函数,友元函数)3. (2001年秋)多态性分为两种:静态多态性和动态多态性。函数重载属于二种多态性中的哪一种:。4. (2002秋)设有语句:inta=6,b=3;floatx=8,y;y=ba*x2;那么y的值为。5. (2003春)设有语句:chars=nChinaXONanjinv,;intm=strlen(s);
9、那么m的值为。(引号UASCII值,换行符)6. (2003春)在C+中函数的参数传递方式有三种:第一种是值传递,第二种是指针传递,第三种是传递。7. (2004春)函数重载是指函数名一样,但函数的不同或函数的不同。8. 程序(2002年春)includevoids(inta9int&b)intt=a;a=b;b=t;voidmain(void)intx=500,y=1000;coutx,t,y,n,;s(x,y);coutx,t,y,n,;程序的第一行输出为第二行输出为g。9. 程序(2004春)(全局变量通过指针传递)#includeintz;voidfun(intx,int&y)z=;=
10、+y;y=y+z;coutx,y,zendl;)voidmain(void)intx=5,y=10;z=15;fun(x,y);coutx,y,zendl;)程序的第一行输出为Qb第二行输出为g。10程序(2004秋)(内部循环)#include void fun(int *a, int *b) (*a)+; *b+; *a+;(*b)+;cout*a,t,*bendl;)void main (void) int cl3=10,20,30, c23=40,50,60);fun(cl, c2);coutcl0,t,cllendl;coutc20,t,c2lendl;程序的第一行输出为11,第二行
11、输出为g,第三行是应。11程序(2002秋)class A#includey=k;m=h;p=10;intpower(void)p=i;for(inti=l;i=m;i+)p*=y;returnp;)voidshow(void)A:show();coutp,n,;);voidfun(A*f)coutpower(),n,;voidmain()Aa(5,3);Bb(2,4,3,3);fun(&a);fun(&b);b.show();intx9n;intmul;public:A(inta9intb)x=a;n=b;mul=1;virtualintpower(void)mul=l;for(inti=l
12、;i=n;i+)mul*=x;returnmul;)voidshow(void)coutmul,t,;);classBzpublicAinty,m;intp;public:B(inti9intj,intk,inth):A(i,j)程序输出的扁一行和第三行分别是。12程序(2003秋)includeints(int(*f)(int),intm,intn)intk,sum=0;for(k=m;k=n;k+)sum+=f(k)+f(k);coutns=sumendl;returnsum;)intfl(intx)returnx+=2;intf2(intx)returnx-=2;voidmain(voi
13、d)coutnresult=n(s(fl,1,2)+s(f2,l,2)endl;程序输出的第一行是第三行是,第五行是13.程序2003年春)includeclassShapepublic:Shape()virtualfloatArea()=0;);classCirclerpublicShapefloatr;public:Circle(floatc)r=c;floatArea()return3*r*r;;classRectanglezpublicShapefloath,w;public:Rectangle(floatc,floatd)h=c;w=d;floatArea()returnh*w;vo
14、idfun(Shape*s)coutArea(),n,;voidmain(void)Circlec(4);fun(&c);Rectangler(5,2);fun(&r);程序输出的第一行是第二行是。14.(2003年春)以下程序的功能是求三角函数Sinx的近似值。求sinx近似值的计算公式XX3X5X7x(2T)为:SinX=I-3+或-下+(T)西工o其中X的值为弧度。当输入的X值为度数时,要求出SinX的近似值,必须将度数转换为弧度。转换公式为:y=3.1415926x360要求计算精度到达0.0000010程序#include#includedoublesin(doublex,doubl
15、eeps)doubleterm,sum,y;intn=1;y=x*x;ter=(l);/xsum=0;while(fabs(term)=eps)sum+=(2);/termn+;term=term*v(3);/(2*n-2)*(2*n-i)term*=-1;return(4);/sum+term或sumvoidmain(void)doublex,y;CoUtVV”输入X的值(角度):“;cinx;while(x360)x-=360;y=3.1415926*x180;15.(2005春)设已建设一条单向链表,指针headNodeintdata;Node*next;以下函数SOrt(Node*he
16、ad)的功能是:将heac顺序排序。算法提示:初始时,使P指向链表的首结点,让Pl指向该结点。将P指向的结点的data值与P结点,依此类推,直至P指向链表的最后一个结点程序4分)Node*sort(Node*head)Node*p=head,*pl/p2;if(p=NULL)returnhead;while(p-next!=NULL)pi=p;p2=p-next;while(p2!=NULL)if(1)/p2-datadataPl=p2;p2=p2-next;16. (2008年春)在以下程序中,函数CreateLink链表上的每一个结点包含一个整型数;函数SortLiColltVV度数为:V
17、Vx;ColItVV其sin值为:VVSil(yJe6)vvV;)旨向该链表的首结点。结点的数据构造如下:struct所指向链表上各结点的数据按data值从小到大的从P之后的所有结点中找出data值最小的结点,指向的结点的data值进展交换。让P指向下一个if(p!=pl)intt;t=p-data;p-data=;/pl-data=t;/pl-data)(4) ;/p=p-nextreturnhead;)()根据键盘输入的数据建设一个单向无序链表,k()通过改变结点在链表中的位置将链表调整为一条有序链表:函数PrintLink()将链表上的数据输出;函数DeleteLiIIk()将链表删除。
18、程序includestructnodeintdata;node*next;node*CreateLink(void)创立无序链表node*pl,*p2,*head=0;inta;COUtVV”产生一条无序链,请输入数据,以1完毕严;cina;while(a!=-1)pl=newnode;pl-data=a;if(head=O)head=pl;p2=pl;)else(1) p2-next=pl;p2=pl;ColltVV”请输入数据,以1完毕了;cina;)p2-next=0;return(head);)voidSortLink(node*&head)/通过移动每个节点的指针来完成链表排序nod
19、e*q,*tq,*p产tp;intflag=0;if(!head)return;for(q=head,tq=0;q;q=q-next)for(tp=q,p=q-next;p;tp=p,p=p-next)if(q-data=p-data)将P和q指向的两个节点所处位置互换(2) tDnext=p-next;p-next=q;q=P;P=tp;)if(!tq)head=q;elsetq-next=q;tq=q;)voidPrintLink(node*head)/打印链表node*p=head;COUtVV”链上各结点的数据为:n;while(p!=NULL)coutdata,t,;(3) d=ne
20、xt;coutnext;(4) “deletepl;voidmain(void)node*head=O;head=CreateLink();PrintLink(head);SortLink(head);PrintLink(head);DeleteLink(head);17. (2011春)在以下程序中,函数CreateO根据键盘输入的整数建设一条单向无序链表,链表上的每一个结点包含一个整数;函数sort。根据链表结点的数据按从小到大的顺序将链表调整为一条有序链表;函数PriIItl)将链表上的整数依次输出;函数del()将链表删除。排序算法提示:(1)初始时,使P指向链表的首结点,(2)从P之
21、后的所有结点中找出data值最小的结点,(3)让Pl指向该结点,并将P指向结点的data值与Pl指向结点的data值进展交换,让P指向下一个结点,(4)重复步骤(2)和(3),直至P指向链表的最后一个结点为止。程序参考答案:1.2.3.4.p2=p-next或p2=pl-nextpl=p2pl-next=p;h=h-next;includestructNodeintdata;Node*next;);Node*sort(Node*head)Node*p=head,*pl,*p2;if(p=NULL)returnhead;while(p-next!=NULL)pi=p;;while(p2!=NUL
22、L)if(p2-datadata)p2=p2-next;)if(p!=pl)intt;t=p-data;p-data=pl-data;pl-data=t;p=p-next;returnhead;Node*creat(void)Node*h=NULL,*p,*pl;intdata=1;while(data)CoIltVV”输入一个整数,0表示输入完毕:;cindata;if(data)p=newNode;p-data=data;p-next=NULL;if(h=NULL)h=pl=p;elsepi=p;)returnh;)voidprint(Node*p)while(p)coutdatanext;cout,n,;)voiddel(Node*h)Node*p;while(h)P=h;(4)deletep;)voidmain(void)Node*head;head=creat();CoIltVVr链表上的数据为了;print(head);head=sort(head);CoIltVV”排序后链表上的数据为:;print(head);del(head);coutendl;