`C++复习资料
一、选择题
1、若X是一个bool型变量,则X&&5<3的值( B )
A、为true
B、为false
C、与X的值相同
D、与X的值相反
2、设a=6,执行语句a+=4; 得到a的值为( D )
A、6
B、12
C、18
D、10
3、字符串”student”占用( D )个字节的空间。
A、7
B、6
C、5
D、8
4、二维数组int b[][4]={{1,2},{1,2,3},{1,2,3,4}}的元素个数为( A )
A、12
B、3
C、4
D、7
5、下列哪个不是用于实现循环结构的语句( B )
A、while
B、if
C、do while
D、for
6、下列表达式为真的是( B )
A、5<3
B、2*3>=6
C、(7= =9)&&(4>0)
D、(10!=2+8)||(5<3)
7、设x=5,执行语句if(x<0) cout< A、5 B、x C、无输出 D、0 8、执行语句k=30;j=k++;后k和j的值分别为( C ) A、k=30,j=30 B、k=30,j=31 C、k=31,j=30 D、k=31,j=31 9、表达式7%3+5*9-10/2的结果为( D ) A、42 B、43 C、40 D、41 10、执行cout<<520< A、520endl”520” B、520endl520 C、520 D、520 “520”520 11、下列数据属于字符型的是:( C ) A、123 B、true C、’c’ D、10.5 12、该for循环语句:for(i=1;i<11;i++) sum+=i; 中循环体的执行次数为( C ) A、8 B、9 C、10 D、11 13、对程序段:if(x>y) z=1; else z=3; 要得到z=3的结果,满足条件的一组数是( D ) A、x=﹣1,y=﹣2 B、x=1,y=0 C、x=2,y=1 D、x=2,y=3 14.下面是关于构造函数的说法,不正确的是(A )。 A. C++规定,每一个类必须有一个构造函数,没有构造函数就不能创建对象 B. 如果没有提供一个类的构造函数(一个都未提供),则C++提供一个默认的构造函数,该默认构造函数是个无参构造函数,它仅仅负责创建对象 C. 虽然一个类定义了一个构造函数(不一定是无参构造函数),C++仍然提供默认的构造函数 D. 与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的 15.在下列说法中,不正确的是( B )。 A. 静态成员函数不能利用this指针 B. 只有非静态成员才可以使用this关键字,因为静态成员没有this指针 C.析构函数不接受任何参数,也不带有任何类型的返回值 D. 虚机制在构造函数和析构函数中仍然可以很好地工作,以实现多态性16.声明类test的拷贝构造函数的正确形式是( D )。 A. int test B. void test C. test(void) D. test(test&) 17.一个const对象( B )。 A. 能访问所有成员函数 B. 只能访问const成员函数 C. 也能访问volatile成员函数 D. 能访问const和volatile成员函数 18.下面关于类的对象性质的描述,正确的是(D )。 A. 对象之间不可以相互赋值 B. 不可以说明指向对象的指针 C. 对象不能用作数组元素 D. 一个对象能用作另一个对象的成员 19、C++源程序文件的扩展名为( A ) A、.CPP B、.C C、.DLL D、.EXE 20、下面的函数声明中, 哪一个是”void BC(int a, int b);”的重载函数? ( C ) A、int BC(int a, int b) B、void BC(int a, char b) C、float BC(int a, int b, int c = 0) D、void BC(int a, int b=0) ?21 .如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c A. 3 B. 2 C. 1 D. 4 22. 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是( C ) A.3 B。 2 C。6 D。4 ?23. 已知char c; char * const pc="asdf",( B )是正确的。 A.pc="dfgh" B.*pc=‘b’ C.*pc++=‘y’ D.pc=&c 24. 执行下列语句后的输出结果是(C)。 int hot=100; int &rad=hot; hot+=100; cout< A.0;B。100; C.200;D。300; 25. 下列对结构及其变量定义错误的是:( D ) A.struct MyS truct{ B。struct MyStruct{ int num; int num; char ch; char ch; }; }my; MyS truct my; C.struct{ D。struct{ int num; int num; char ch; char ch; } }; my; struct my; 26.下列关于指针运算的描述错误的是:(A ) A.在一定条件下,两个指针可以相加 B.在一定条件下,两个指针可以进行关系运算 C.在一定条件下,指针可以为空 D.在一定条件下,两个指针可以相互赋值 27.在C++语言中,对函数参数默认值描述正确的是:(D) A.函数参数的默认值只能设定一个 B.一个函数的参数若有多个,则参数默认值的设定可以不连续 C.函数参数必须设定默认值 D.在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值28. 不能作为函数重载判断依据的是:( D ) A.参数个数B。参数类型C。函数名字D。返回类型 29. 以下程序的输出结果是:( B ) #include void prt(int *x,int *y,int *z){ cout<<++*x<<","<<++*y<<","<<*z++< } int a=10,c=20,b=40; void main(){ prt(&a,&b,&c); prt(&a,&b,&c); } A.11,42,31 B。11,41,20 C。11,21,40 D。11,41,21 12,21,41 12,42,20 11,21,41 12,42,22 ?30.以下程序的输出结果是:( D ) #include void func(char **m){ ++m; cout<<*m< } void main(){ static char *a[]={"morning", "afternoon", "evening"}; char **p; p=a; func(p); } A.字符o的起始地址B。字符a的起始地址 C.字符o D。afernoon 31.以下程序的输出结果是:( D ) #include int fun(char *s){ char *p=s; while (*p!='\0') p++; return (p-s); } void main(){ cout< } A.0 B。1 C。2 D。3 32. 不正确的标识符是(B) A. _a2 B. 2ai C. a2_i D. INt 33. 在( C ) 情况下适宜采用inline 定义内联函数。 A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少、频繁调用 D. 函数代码多、不常调用 34. 通过( A ) 调用虚函数时,采用动态绑定(binding)。 A. 对象指针 B. 对象名 C. 成员名限定 D. 派生类名 35. 假定一个类的构造函数为A(int aa,int bb){a=aa++;b=a*bb++;} ,则执行Ax(4,5); 语句后,x.a 和x.b 的值分别为( C ) 。 A. 4 和5 B. 5 和4 C. 4 和20 D. 20 和5 36. 在C++ 中有以下4 条语句:static int hot=200;int &rad=hot; hot=hot+100;cout< A. 0 B. 100 C. 300 D. 200 37.对do-whie 语言错误的说法是(C ) A. 可构成多重循环结构 B. 循环次数不可能为0 C. 循环次数可能为0 D. 先执行后判断 38. 静态成员函数没有(B ) A. 返回值 B.this 指针 C. 指针参数 D. 返回类型 39. 在类中说明的成员可以使用关键字( A )进行修饰。 A. public B. extern C. cpu D. register 40. 下列不是描述类的成员函数的是( C ) A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 41. 若int a[3]= {1 ,2 ,3 },*p ;则下列赋值语句中 正确的是(D) A. p=&a ; B. *p=a ; C. *(a+1)=a ; D. p=a+1 42. 若p1 、p2 都是指向整型的指针,p1 已经指向数量x , 要使p2 也指向x ,正确的是(A) A. p2=p1 ; B. p2=**p1 ; C. p2=&p1 ; D. p2=*p1 ; 43. 在类中说明的成员可以使用关键字(A ) 进行修饰。 A. private B. extern C. auto D. register 44. 在int a=3,*p=&a; 中,*p 的值是( D) 。 A. 变量a 的地址值 B. 无意义 C. 变量p 的地址值 D. 3 45. 假定AB 为一个类,则执行AB x ;语句时将自动调用该类的(B ) 。 A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值构造函数 46. 如果class 类中的所有成员在定义时都没有使用关键字pubilc, private,protected ,则所有成员缺省定义为:( C) 。 A. public B. protected C. private D. static 47.语句int (*p)( ); 的含义是(A) A.p 是一个指向函数的指针变量,该函数的返回值是一个整型数据 B.p 是指针变量,指向一个整型数据 C.p 是一个指向一维数据的指针变量 D.p 是指针函数 48. 在C++ 中实现封装是借助于(B ) A. 枚举 B. 类 C. 数组 D. 函数 49.设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是( C )。 A. 2 B. -1 C. 0 D. 1 50. 设int x[] = {1,2,3,4,5,6},* p = x;则值为3的表达式是 (B) A. p + = 2, * + + p B. p + = 2, * p + + C. p + = 3, * p D. p + = 2, + + * p 51. 关于类概念的描述中,( D )是错误的。 A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体; C.类是创建对象的样板; D.类不是C++中的一种数据类型; 52. 在32位机中,double型字宽为(D)字节。 A.2;B.4;C.6;D.8 53. 在int a[][3]={{1,0},{3,2},{4,5,6},{0}};中a[2][2]的值是(C)。 A.0; B.5; C.6; D.2 54. 对于double (*p)[10];的描述,(A )是正确的。 A.p是一个指向数组的指针,所指向的数组是10个double型元素; B.p是一个指向某个数组中第10个元素的指针,该元素是double型变量; C.p[5]表示某个数组的第10个元素的值; D.p是一个具有10个元素的指针数组,每个元素是一个double型指针; 55. 下述关于开关语句的描述中,(A )是正确的。 A.开关语句中default子句可以没有,也可以有一个; B.开关语句中每个语句序列中必须有break语句; C.开关语句中default子句只能放在最后; D.开关语句中case子句后面的表达式可以是整形表达式。 56. 下列(D)是引用调用; A.形参是指针,实参是地址值;B.形参和实参都是变量; C.形参是数组名,实参是数组名;D.形参是引用,实参是变量。 57. (A )是析构函数的特征。 A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同; C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。; 58. 关于new运算符的下列描述中,( D )是错的。 A.它可以用来动态创建对象和对象数组; B.使用它创建的对象或对象数组可以使用运算符delete删除; C.使用它创建对象时要调用构造函数; D.使用它创建对象数组时必须指定初始值。 59. 已知fun(int)是类Test的公有成员函数,p是指向成员函数fun()的指针,采用(D)是正确的: A.p=fun; B.p=Test::fun(); C.p=fun(); D.p=Test::fun; 60. 关于对象概念的描述中,(A )是错误的。 A. 对象就是C语言中的结构变量; B. 对象代表着正在创建的系统中的一个实体; C. 对象是一个状态和操作(或方法)的封装体; D. 对象之间的信息传递是通过消息进行的; 61. 下列给字符数组进行初始化中,(A )是正确的。 A. char s1[ ]="12345abcd"; B. char s2[3]="xyz"; C. char s3[][3]={ 'a', 'x', 'y'}; D. char s4[2[3]={"xyz","mnp"}; 62. 对于int *pa[5];的描述,(D )是正确的。 A.pa是一个指向数组的指针,所指向的数组是5个int型元素; B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量; C.pa[5]表示某个数组的第5个元素的值; D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针; 63. 下述静态数据成员的特征中,(D )是错误的。 A.说明静态数据成员时前边要加修饰符static; B.静态数据成员要在类体外进行初始化; C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符; D.静态数据成员不是所有对象所共用的。 64、下列的各类函数中,(C )不是类的成员函数。 A.构造函数; B.析构函数; C .友元函数; D.拷贝构造函数; 二、填空题 1、一个基本语句的最后一个字符是( ;). 2、与int x=100; while(x>0) { cout<<’P’;x--; } 等效的for语句是( for(x=100;x>0;x--) )。 3、执行for(int i=1;i<30;i++) cout<<”*”;将输出( 29 )个*号。 4、数学函数sqrt(49)的结果为(7),pow(3,3)的结果为:(27)。 5、C++程序主要有三种基本控制结构,分别是顺序结构、条件分支结构和 (循环结构)。 6.在c++中,除具有循环、switch 语句的函数不能说明为内联函数外,其它函数都可以说明为内联函数。 7.在c++中,封装可以由public 、private 和 protect 等关键字提供。 8.若example是已定义的类,在程序结束之前,共计存在2个对象。 #include”example” main() {example X(0); X=5;X.print(); X=example(10); X.print(); } 9.在c++中,如果在多条继承路径有一个公共的基类,如果想使这个公共的基类只产生一个拷贝,则可以将这个基类说明为虚基类。使用关键字virtual 说明。 10.静态成员为该类的所有对象共享,它们被存储于一个中。 15 在C语言中,编程的单位是__函数___;在C++语言中,编程的单位是_对象____。 16 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的 __数据成员___,共同行为被描述为类中的___函数成员___。 17 类的具体表现是通过定义_成员函数______来操作的。 18 对类中的成员函数和属性的访问是通过__①public___、__②private____和__③protect___这3 个关键字来控制的。 19 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__private___权 限,而把成员函数(方法)定义为__public____权限。 20) 在类定义中,数据和成员函数默认权限是___private______。 21 类中构造函数有___一个或多__个,析构函数有____一__个。 22 类中的构造函数是一个特殊的成员函数,它由类的对象___生成时__调用,它的作用 是___初始化___。 23 在定义类的对象时,C++程序将自动调用该对象的_构造函数_函数初始化对象自身。 24 在撤销类的对象时,C++程序将自动调用该对象的__析构____函数。 25 ___new__运算符对指定类型对象动态分配内存并返回____true 或false___。 26 ____delete____运算符删除(25)题中的运算符所动态分配的内存空间。 27 假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造 函数形式为__ MyClass(){};____。 28 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构 函数形式为_~MyClass(){};_____。 29 在类中定义和实现的函数称为__内联函数______。 30 非成员函数应声明为类的_友元函数(friend)_______才能访问这个类的private成员。 31 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入 语句__friend FriendClass;______。 32 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass 的定义中加入语句__ friend FriendFunction(); _____。 33 下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。 class MyClass { public: enum Week {Sun,Mon,Tue,Wed,Thur,Fri,Sat }; Week week; } void fun(MyClass &my) { ___my.week____= __wed____; //将对象my的week赋值为所定义的枚举类型//值为3的枚举量 } 34 在下面程序的横线处填上适当的语句,使该程序执行结果为10。 #include class MyClass { public: ___void setx(int a){x=a;}__或_ MyClass(int x){this.x=x;};_ //为x置值 ____int getx(){return x;}___ //取x值 private: int x; }; void main() { MyClass my(10); cout << my.GetNum() << endl; } 35 完成下面的类定义。 class MyClass { public: MyClass( ) { x = 0; } ___friend__ int GetNum(_MyClass ____ my); private: int x; }; int GetNum(___ MyClass ___ my) { return my.x; } 1.在C++中,函数的参数有两种传递方式,它们是值传递和引用传递。 2.当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。 3.在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有作用域说明符,对此数据成员的访问将出现歧义。 4.拷贝构造函数使用& 作为参数初始化创建中的对象。 5.在公有继承的情况下,基类数据成员在派生类中的访问权限不变。 6.描述命题"A小于B或小于C"的表达式为A 7.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到构造函数,否则应用程序会产生一个编译错误。 9.为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与最接近的还未配对的if 配对。 10.设"int a=3,b=4,c=5;",表达式"(a+b)>c&&b==c"的值是false 。 11.面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态。 12.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型; 13.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个~。 16.在C++类中,const关键字可以修饰对象和成员函数,const对象不能被更新,const成员函数不能更新对象的数据成员。 17.举出C++中两种用户自定义的数据类型:结构体、枚举类型。 18. C++中没有字符串类型,字符串是通过数组来表示的,每一个字符串都有一个结尾字符‘\0’。19. C++中没有输入输出语句,输入输出是通过流操作实现的,写出一条打印整型变量n的输出语句:cout< 20、在语句int a[10]; 中,10的含义是数组的大小为10 。 21、在函数中有这样的语句来申请空间:int *p=new int[10];要释放该空间应使用语句:delete p 。 22、函数重载的条件是函数名相同,参数的个数或形参类型不同。 23、对于类中的非静态函数成员,都包含一个默认的指针this,它代表正在被成员函数操作的对象。 24、已知变量x的值是3,则表达式x+=3,x++,x+2的值是9 。 25、类X的静态整型数据成员i的初值是10,定义的方法是static int i=10; 。 26、结构数据成员的默认访问权限是pirvate 。 27、要使语句p=new double[12][5];能够正常执行,变量p的定义应为double *p。 28、语句char c[20]="Good morning"; c[4]=0; cout< 三、程序填空 1、以下程序实现求1~100这100个整数的和的运算。 #include void main( ) { int i ,sum; sum=0; for(i=1; i < 100 ; i++ ) sum+=i ; cout<<”sum=”< } 2、以下程序实现从键盘输入两个整数a和b,输出其中大者的功能(不考虑相等的情况) #include void main( ) { i nt a,b ; cin>>a>>b; if( a>b ) cout<<”最大值为:”< else cout<<”最大值为:”< } 3.设有一函数,其代码如下: int power (x,n) { int i,p; for (p=1,i=1; i<=n;++i ) p=p*x; return(p); } 现要求取消变量i,重写该函数如下,请在空白上填上适当内容。 int power (int x,int n) { int p; for ( p=1 ; n>0; __n--____) p=p*x; return (p); } 4.本程序用古典的Eratosthenes的筛法求从2起到指定范围内的素数。如果要找出2至10中的素数,开始时筛中有2到10的数,然后取走筛中的最小的数2,宣布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数3、5、7、9:重复上述步骤,再取走最小数3,宣布它为素数,并取走3的倍数,于是留下5、7。反复重复上述步骤,直至筛中为空时,工作结束,求得2至10中的全部素数。程序中用数组sieve表示筛子,数组元素sieve[i]的值为1时,表示数i在筛子中,值为-1时表示数i已被取走。 #include const int MAX=22500; void main() { unsigned int i , range , factor , k ; int sieve[MAX] ; cout<<"please input the range : "; cin>>range; /*range指出在多大的范围内寻找素数*/ for (i=2 ; i<=range ; i++) /* 筛子初始化*/ sieve[i]=1 ; factor=2 ; while (factor<=range) { if ( sieve[factor] ==1 ) { /*筛子最小数是素数*/ cout< k=factor; while (k<=range) { /*移走素数的倍数*/ sieve[k]=-1 ; /*筛中的个数减一*/ k=k+factor ; } } factor++ ; } 四、程序阅读 1、int a,b,s; 2、int x=7,y=4,z; a=12;b=35; if(x>y) z=x; s=a+b; else z=y; cout<<”s=”< 输出结果为: s=47输出结果为: z=7 3、int x=6; 4、int x; while(x++<5) for(x=1;x<10;x++) cout<<”good”;{if(x%3= =0) cout<<“that’s the end”;cout< 输出结果为:that’s the end输出结果为: 369 5、int n=12; 6、int i; int data[8]; if(n>5) for(i=0;i<8;i++) { if(n<11) cout<<”right!”;data[i]=i; else cout<<”left!”; }for(i=7;i>=0;i--) else cout<<”center!”; cout< 输出结果为: left 输出结果为:76543210 1、#include void main() { int a,b,c,; c=2,c+=10; a = 10; b=11; a * = 2; b / = 2; c % = 2; cout< } 输出结果:20,5,0 2、#include void main() { int a = 50 , b(0) ; b = ++a; cout< b = a++; cout< } 输出结果: 51,51 52,51 5、#include void main() { int i; for(i=4 ; i<=10 ; i++ ) { if (i%3= =0) continue; cout< } 输出结果: 457810 6.分析以下程序执行结果 #include int add(int x,int y) { return x+y; } double add(double x,double y) { return x+y; } void main() { int a=4,b=6; double c=2.6,d=7.4; cout< } 解: 本题说明函数重载的使用方法,这里有两个add()函数,一个add()函数的参数与返回值为int型,另一个的参数与返回值为double型,它们是根据参数类型自动区分的。 所以输出为: 10,10 7.分析以下程序的执行结果 #include class Sample { int i; double d; public: void setdata(int n){i=n;} void setdata(double x){d=x;} void disp() { cout<<"i="< } }; void main() { Sample s; s.setdata(10); s.setdata(15.6); s.disp(); } 解: 本题说明重载成员函数的使用方法。setdata()成员函数有两个,根据其参数类型加以区分。所以输出为:i=10, d=15.6 8.分析以下程序的执行结果 #include void main() { int a; int &b=a; // 变量引用 b=10; cout<<"a="< } 解: 本题说明变量引用的方法。b是a的引用,它们分配相同的空间,b的值即为a的值。 所以输出为 a=10。 注意:引用是引入了变量或对明的一个义词,引用不产生对象的副本。 9.分析以下程序的执行结果 #include class Sample { int x; public: Sample(){}; Sample(int a){x=a;} Sample(Sample &a){x=a.x+1;} void disp(){cout<<"x="< }; void main() { Sample s1(2),s2(s1); s2.disp(); } 解: 本题说明类拷贝构造函数的使用方法。Sample类的Sample(Sample &a)构造函数是一个拷贝构造函数,将a对象的x值赋给当前对象的x后加1。 所以输出为:x=3。 10.分析以下程序的执行结果 #include void swap(int &x,int &y) { int temp; temp=x; x=y; y=temp; } void main() { int x=10,y=20; swap(x,y); cout<<"x="< } 解: 这里的函数采用引用调用的方式,所以输出为:x=20,y=10 注意:在函数调用里,引用调用与传址调用的效果相同,但更加简洁直观。 11.分析以下程序的执行结果 #include void main() { int a[]={10,20,30,40},*pa=a; int *&pb=pa; pb++; cout<<*pa< } 解: pa为数组的指针,首先指向a[0],pb是pa的引用,当执行pb++时,也使pa指向了a[1],所以输出为:20 12.分析以下程序的执行结果 #include class Sample { int x; public: Sample(){}; Sample(int a){x=a;} Sample(Sample &a){x=a.x++ +10;} void disp(){cout<<"x="< }; void main() { Sample s1(2),s2(s1); s1.disp(); s2.disp(); } 解: Sample类的Sample(Sample &a)构造函数是一个拷贝构造函数,将a对象的x增1然后加上10后赋给当前对象的x,由于a是引用对象,所以输出为: x=3 // ++运算的结果 x=12 // 2+10 13.写出下列程序的运行结果。 #include int f(int a){ return ++a; } int g(int& a){ return ++a; } void main(){ int m=0,n=0; m+=f(g(m)); n+=f(f(n)); cout<<"m="< cout<<"n="< } 程序输出结果为: m=3 n=2 14. 写出下列程序的运行结果。 #include void main() { struct num{ int x; int y; } sa[] = {{2, 32}, {8, 16}, {4, 48}}; struct num *p = sa+1; int x; x = p->y / sa[0].x * ++p->x; cout<<”x=”< } 程序输出结果为: X=72 P->X=9 15.#include class A{ int a; public : A(int aa=0){a=aa;} ~A(){cout<<”Destructor A!”< }; class B : public A { int b; public: B(int aa=0,int bb=0):A(aa){b=bb;} ~B(){cout<<”Destructor B!”< }; void main(){ B x(5),y(6,7); } 程序输出结果为: Destructor B! 7 Destructor A! 6 Destructor B! 0 Destructor A! 5 22.下面程序的运行结果是。 #include "iostream.h" void main( ) { int i=1; while (i<=15){ i++; if (i%3!=2) continue; else cout <<"i="< } } 程序输出结果为: i=2 i=5 i=8 i=11 i=14 23.下面程序的运行结果是。 #include using namespace std; int GCD (int u, int v) { while (u % v) { int t= u % v; v = t; } return v; } int GCM (int u, int v) { int gcd = GCD (u, v); return u * v / gcd; } int main () { int A [] = {4, 6,8,16}; int gcd = A[0], gcm = A[0]; int i = 1; while (i < 4) { gcd = GCD (gcd, A[i]); gcm = GCM (gcm, A[i]); i++; } cout << "gcd :" < cout << "gcm :" << gcm << endl; return 0; } 答案: gcd : 2 gcm : 48 24. #include using namespace std; class CT { public : CT () { cout << "Default constructor called" << endl; } CT (const CT &rhs) { cout << "Copy constructor called" << endl; } }; int main () { CT ct; cout << "Step1" << endl; p = new CT; CT ct3 (*p); cout << "Step2" << endl; delete p; return 0; } 答案: Default constructor called Step1 Default constructor called Copy constructor called Step2 25、#include void main() { int x=3,y=3; switch(x%2) { case 1: switch (y) { case 0:cout<<"first\t"; case 1:cout<<"second\t";break; default: cout<<"hellow\t"; } case 2:cout<<"third\n"; } } 答案: hellow third 26、#include void swap(int *x,int &y); void main() { int a(13),b; b=a%5; cout<<"a="< swap(&a,b);