C++等级考试复习一、选择题1.(2001年秋)设有说明:intx=10,y=4,f;floatm;执行表达式f=m=x/y后,则f、m的值分别为。A.2,2.5B.3,2.5C.2.5,2.5D.2,2.02.(2003秋)设有说明语句:chars[]=ef\0\123\\\n89;sizeof(s)的值是。A.2B.9C.11D.153.(2002年春)实型变量x的取值范围为闭区间[-2,10]或开区间(15,34),则正确表示x取值范围的逻辑表达式是。A.-2=x=10||15x40B.(-2=x&&x=10)||(15x&&x34)C.-2=x=10&&15x40D.(-2=x&&x=10)&&(15x&&x34)4.(2003秋)设x为整数,C++中能正确地表达数学式0≤x5的是。A.0=x15B.x=0||x=1||x=2||x=3||x=4C.x=0||x5D.!(x0||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秋)以下四组函数原型说明中,满足C++函数重载规则的是。A.floatf(floatx);voidf(floaty);B.floatf(floatx);voidf2(floatx,floaty);C.floatf(floatx,inty);voidf(floaty);D.floatf(floaty);floatf(floaty);8.(2005秋)函数重载是指。A.函数名相同,但函数的参数个数不同或参数的类型不同B.函数名相同,但函数的参数个数不同或函数的返回值的类型不同C.函数名不同,但函数的参数个数和参数的类型相同D.函数名相同,但函数的参数类型不同或函数的返回值的类型不同9.(2011春)下述关于函数重载的描述中,不正确的是。A.两个或两个以上的函数取相同的函数名,但形参的个数不同B.两个或两个以上的函数取相同的函数名,各函数的返回值的类型必须不同C.两个或两个以上的函数取相同的函数名,形参的个数相同但类型不同D.两个或两个以上的函数取相同的函数名,形参的个数不同或类型不同10.(2012春)C++中,函数重载是指两个或两个以上的函数,其函数名。A.不同,但形参的个数或类型相同B.相同,但返回值类型不同C.相同,但形参的个数或类型不同D.相同,形参的个数相同,但其类型不同11.(2002秋)下列关于类的构造函数和析构函数的叙述中,不正确的是。A.类的析构函数可以重载B.类的构造函数可以重载C.定义一个类时可以不显式定义构造函数D.定义一个类可以不显式定义析构函数12.(2003春)以下有关对象的叙述中,不正确的是。A.产生对象时必定要调用构造函数B.撤消对象时必定要调用析构函数C.对象被保护,其私有成员不能任意访问D.对象可以没有构造函数或析构函数13.(2011春)以下有关this指针的叙述中,不正确的是。A.当调用对象的非静态成员时,总存在一个this指针B.非静态成员函数调用类中的成员时,可直接使用this指针C.this指针隐含地指向要用到的当前对象D.静态成员函数也存在this指针14.(2010春)类的成员函数中,没有this指针的是。A.构造函数B.析构函数C.虚函数D.静态成员函数15.(2003秋)下面有关运算符重载的叙述中,正确的是。A.非静态成员函数重载运算符时带有this指针B.友元函数重载运算符时带有this指针C.成员函数与友元函数重载运算符时都不带有this指针D.用成员函数或友元函数重载同一运算符时,两者的参数类型与参数个数相同16.(2004春)以下有关析构函数的叙述中,正确叙述的是。A.析构函数可以有一个或多个参数B.可以重载析构函数C.析构函数可以定义为虚函数D.必须显式地自定义析构函数17.(2004春)下面有关基类与其派生类的的叙述中,正确的是。A.派生类对象不能赋给基类对象B.派生类对象的地址不能赋给其基类的指针变量C.基类对象不能赋给派生类对象D.基类对象的地址能赋给其派生类的指针变量18.(2006秋)下列关于赋值兼容规则的叙述中,不正确的是。A.派生类的对象可以赋值给基类的对象B.基类的对象可以赋值给派生类的对象C.派生类的对象可以初始化其基类的引用D.可以将派生类对象的地址赋值给其基类的指针变量19.(2011秋)在C++中,没有this指针的函数是。A.静态成员函数B.构造函数C.析构函数D.非静态的内联成员函数20.(2011秋)以下关于C++类的叙述中,不正确的是。A.类可以动态地描述和动态地产生B.虚基类可以解决多重继承中的二义性C.类是具有相同行为的若干对象的统一抽象D.类是创建对象的一个模板二、填空题1.(2006秋)当一个类的非静态成员函数被调用时,该成员函数的指向调用它的对象。2.(2008春)在C++中,重载赋值运算符“=”和下标运算符“[]”等只能用实现,而重载插入运算符“”和提取运算符“”等只能用实现。(成员函数,友元函数)3.(2001年秋)多态性分为两种:静态多态性和动态多态性。函数重载属于二种多态性中的哪一种:。4.(2002秋)设有语句:inta=6,b=3;floatx=8,y;y=b/a*x/2;则y的值为。5.(2003春)设有语句:chars[]=China\0Nanjin;intm=strlen(s);则m的值为。(引号,ASCII值,换行符)6.(2003春)在C++中函数的参数传递方式有三种:第一种是值传递,第二种是指针传递,第三种是传递。7.(2004春)函数重载是指函数名相同,但函数的(1)不同或函数的(2)不同。8.[程序](2002年春)#includeiostream.hvoids(inta,int&b){intt=a;a=b;b=t;}voidmain(void){intx=500,y=1000;coutx'\t'y'\n';s(x,y);coutx'\t'y'\n';}程序的第一行输出为(1),第二行输出为(2)。9.[程序](2004春)(全局变量通过指针传递)#includeiostream.hintz;voidfun(intx,int&y){z=x;x=x+y;y=y+z;coutx','y','zendl;}voidmain(void){intx=5,y=10;z=15;fun(x,y);coutx','y','zendl;}程序的第一行输出为(1),第二行输出为(2)。10.[程序](2004秋)(内部循环)#includeiostream.hvoidfun(int*a,int*b){(*a)++;*b++;*a++;(*b)++;cout*a'\t'*bendl;}voidmain(void){intc1[3]={10,20,30},c2[3]={40,50,60};fun(c1,c2);coutc1[0]'\t'c1[1]endl;coutc2[0]'\t'c2[1]endl;}程序的第一行输出为(1),第二行输出为(2),第三行是(3)。11.[程序](2002秋)#includeiostream.hclassA{intx,n;intmul;public:A(inta,intb){x=a;n=b;mul=1;}virtualintpower(void){mul=1;for(inti=1;i=n;i++)mul*=x;returnmul;}voidshow(void){coutmul'\t';}};classB:publicA{inty,m;intp;public:B(inti,intj,intk,inth):A(i,j){y=k;m=h;p=10;}intpower(void){p=1;for(inti=1;i=m;i++)p*=y;returnp;}voidshow(void){A::show();coutp'\n';}};voidfun(A*f){coutf-power()'\n';}voidmain(){Aa(5,3);Bb(2,4,3,3);fun(&a);fun(&b);b.show();}程序输出的第一行和第三行分别是(1),(2)。12.[程序](2003秋)#includeiostream.hints(int(*f)(int),intm,intn){intk,sum=0;for(k=m;k=n;k++){sum+=f(k)+f(k);couts=sumendl;}returnsum;}intf1(intx){returnx+=2;}intf2(intx){returnx-=2;}voidmain(void){coutresult=(s(f1,1,2)+s(f2,1,2))endl;}程序输出的第一行是(1),第三行是(2),第五行是(3)。13.[程序](2003年春)#includeiostream.hclassShape{public:Shape(){}virtualfloatArea()=0;};classCircle:publicShape{floatr;public:Circle(floatc){r=c;}floatArea(){return3*r*r;}};classRectangle:publicShape{floath,w;public:Rectangle(floatc,floatd){h=c;w=d;}floatArea(){returnh*w;}};voidfun(Shape*s){couts-Area()'\n';}voidmain(void){Circlec(4);fun(&c);Rectangler(5,2);fun(&r);}程序输出的第一行是(1),第二行是(2)。14.(2003年春)以下程序的功能是求三角函数sinx的近似值。求sinx近似值的计算公式为:357(21)sin...(1)13!5!7!(21)!nnxxxxxxn。其中x的值为弧度。当输入的x值为度数时,要求出sinx的近似值,必须将度数转换为弧度。转换公式为:y=3.1415926x/360要求计算精度达到0.000001。[程序]#includeiostream.h#includemath.hdoublesin(doublex,doubleeps){doubleterm,sum,y;intn=1;y=x*x;term=(1);//xsum=0;while(fabs(term)=eps){sum+=(2);//termn++;term=term*y/(3);//((2*n-2)*(2*n-1))term*=-1;}return(4);//sum+term或sum}voidmain(void){doublex,y;cout输入x的值(角度):;cinx;while(x360)x-=360;y=3.1415926*x/180;cout度数为:x;cout其sin值为:sin(y,1e-6)'\n';}15.(2005春)设已建立一条单向链表,指针head指向该链表的首结点。结点的数据结构如下:structNode{intdata;Node*next;};以下函数sort(Node*he