C++程序设计习题集(共46页).doc
《C++程序设计习题集(共46页).doc》由会员分享,可在线阅读,更多相关《C++程序设计习题集(共46页).doc(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上上机题:先定义“高度”类Hight 和“圆”类Circle,再由Hight和Circle多重派生出“圆柱体”类Cylinder。在主函数中定义一个圆柱体对象,调用成员函数求出圆柱体的体积和表面积。第一部分:一选择填空题1类成员缺省的访问特征是_C_,结构体缺省的访问权限是_B_.A. protected B. public C. private D. friend 2下列关于类的成员的访问特征的描述中,正确的_ A.必须首先说明具有私有特征的成员 B.数据成员必须说明成私有的,成员函数必须说明成私有的 C.每个成员前都必须有标明访问特性的关键字 D.在同一类中,说明访
2、问特性的关键字可以多次使用3关于类和对象,下列说法不正确的是_A. 类与对象的关系类似于数据类型与变量的关系B.对象是类的一个实例C.任何一个对象必定属于一个特定的类D.一个类只能有一个对象4关于类的一个成员函数,下列说法中正确的是()A.必须在类内定义 B. 一定是内联函数C.不可以重载 D.可以设置参数的缺省植5以下不可以作为类的成员的是()A. 自身类对象的指针 B. 自身类的对象 C.自身类对象的引用 D. 另一个类对象的引用6已知一个类,类名为A,可以定义A类的对象或定义A类的指针,下列一定不正确的形式为_A. A a1 B. A a2 ( 16 )C. A A3( ) D. A *
3、P= new A 7. 已知一个类COMPLEX,有下述两行: Complex c ; /AComplex c() /B以下描述中错误的是_A. A行定义了一个对象,并调用缺省的构造函数B. B行定义了一个对象,并调用缺省的构造函数C. B行是一个函数的原型说明,函数名为C,函数没有参数,返回值类型是ComplexD. A行和B行两行的意义不一样8.设有下列对象定义;class A public : int a ,b ; a1= 1,2, a2 ,a3 ; classpublic : int a,b;a4 ;则以下正确的定义或赋值形式是_A. a3=a2=a1; B. a4=a1; C. A
4、*p=&a4; D. A &re=a49. 下列描述中, _不是构造函数的特征 A. 构造函数可以重载 B. 必须显示为类定义一个构造函数 C. 无须为构造函数指定返回值类型 D. 构造函数在产生对象时由系统自己调用10.下列有关析构函数的描述中,正确的是_A. 析构函数的定义只能在类体内B. 析构函数可以有一个或多个参数C. 析构函数是在撤消对象时,系统自动调用的D. 析构函数可以重载11.以下关于构造函数和析构函数的描述中错误的是_ A. 用户不定义缺省的构造函数,则系统自动生成一个缺省的构造函数 B. 若用户不定义拷贝的构造函数,则系统自动生成一个拷贝的构造函数 C. 若用户不定义析构函
5、数,则系统自动生成一个析构函数 D. 以上A错误,而B,C正确12.定义复数类如下;class Complex double real ,image ;public:Complex (double r=0 ,double i=0 ) real =r ; image =i ;Complex (Complex &c) real=c.real ; image=c .image ; 若有Complex c1; /A Complex c2(3,5); /B Complex c3(c2); /C c2=c1; /D 则下列描述中正确的是_ A. C行和D行均调用了拷贝构造函数 B. C行调用了拷贝构造函数
6、C. B行调用了拷贝构造函数 D. A行调用了拷贝构造函数13. class Aint x, int y ;public ;A (int a, int b ) x=a;y=b;void show()coutx,yendl;void set(int a,int b)x=a;y=b;void main()A obj;obj.set(3,5);obj.show();对上述过程段,以下说法中,正确的是_ A.编译时报错,程序无法运行B.编译时无错,运行正常,输出3,5C.编译无错,运行时报错 D.编译时报警告错,但运行正常,输出3,514在下列程序中,C类的数据成员中有一个A 类对象和一个B类对象。#
7、includeclass A int a;public:A(int x=10)a=x;int GetA()return a; ; class B int b;public: B(int x)b=x; int GetB()return b;class C int c;A aobj;B bobj;public: C(int x,int y,int z):aobj(y),bobj(z) /E c=x; void Print()coutaobj.GetA()tbobj.GetB()tcendl;void main() C cobj(3,6,8); cobj.Print();程序在E行定义了构造函数,如
8、果将该行改为下列中_选项时,便会出现编译错误。A. C(int x,int y,int z): aobj(z),bobj(y)B. C(int x,int y,int z): bobj(z)C. C(int x,int y,int z): aobj(y)D. C(int x,int y,int z): aobj(x),bobj(y+z)二找错,运行结果1.指出下列程序的错误:#include class A int x,y; public: A( )x=y=0; A(int i=0,int j=0)x=i,y=j; void show()coutx,yendl;void main() A a1
9、,a2(6,8);错误:/该程序有两个默认的构造函数 a1.show(); a2.show(); 2.写出下列程序的运行结果: #include class A int x,y; public: A( )x=y=0;cout”Default constructor called.n; A(int i,int j) x=i,y=j coutconstructor called.n”; A( )show(); cout”Destructor called.n”; void show()coutx,yendl; ; void main() A a1,a2(6,8); a1.show(); a2.sh
10、ow(); Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.3.根据以下两个方框中的内容,写出两个版本的运行结果: #includeclass A int x,y;public:A(int i=0,int j=0) x=i; y=j; show (); cout”Constructor called.n”; A(A &a);A( ) show(); cout”Destructor called.n”; void set(int i=0,int j=0)x=
11、i;y=j;void show()coutx,y,;A:A(A &a) x=a.x; y=a.y; show(); cout”Copy constructor called.n”;void main() A a1,a2(6,8),a3(a2),a4; a4=fun(a3); a4.Show();a3.Show();coutendl;左边的答案:0,0,Constructor called.6,8,Constructor called.6,8,Copy constructor called.0,0,Constructor called.6,8,Copy constructor called.6,
12、8,3,7,Copy constructor called.3,7,Destructor called.3,7,Destructor called.3,7,6,8,3,7,Destructor called.6,8,Destructor called.6,8,Destructor called.0,0,Destructor called.右边的答案:0,0,Constructor called.6,8,Constructor called.6,8,Copy constructor called.0,0,Constructor called.6,8,3,7,3,7,3,7,Destructor
13、called.3,7,Destructor called.6,8,Destructor called.0,0,Destructor called.4.写出下列程序的运行结果include class A int x ,y ;public: A(int i=0,int j=0 )x=i,y=j;Show( ) ;cout”constructor called .n” A( ) Show ( );cout”destructor called .n”; void Set (int i=0,int j= 0) x=i,y=j;void Show ( ) cout x,y . ;A &fun ( A &
14、a) a.Show ( ); cout endl;a.Set ( 3, 7 ); return a ;void main ( ) A a1 ,a2 ( 6,8 ),a3 (a2 ), a4=a1 ; a4=fun (a3);a4.show ( );coutendl;0,0,constructor called.6,8,constructor called.6,8,3,7,3,7,destructor called.3,7,destructor called.6,8,destructor called.0,0,destructor called.5. 写出下列程序的运行结果#includecla
15、ss Complexint real ,image ;public :Complex (int x=0,int y=0 )real =x ;image=y; Show ( ); cout”constructn”;Complex( ) Show ( );coutdestructn.”; void Show ( ) cout(real,image);void Print ( ) Show ( );cout endl;void main ( )Complex c5=3,Complex (4),Complex ( ),Complex (5,6);for (int i=0;i5; i+) ci.Prin
16、t( );cout”exit main ( )n”;(3,0)construct(4,0)construct(0,0)construct(5,6)construct(0,0)construct(3,0)(4,0)(0,0)(5,6)(0,0)exit main ( )(0,0)destruct.(5,6)destruct.(0,0)destruct.(4,0)destruct.(3,0)destruct6写出下列程序的运行结果#includeclass Test int x ;public: Test ( int i=0 ) x=i;void print ( ) cout x.this end
17、l ;void main ( ) Test t1(8),t2(9);cout&t1,&t2endl; /A t1.print ( ); /B t2 print ( ); /C若A行的输出是0x0012FF7C,0X0012FF78,则B行和C行的输出是_ 8. 0012FF7C , 9_ .0X0012FF78_ _7.写出下列程序的运行结果#includeclass List int a10,n;public :List (int a 10,int n ) List : : n=n; /List :n 表示数据成员n ,以便与参数n区别 for (int i=0 ; in; i+) List
18、 :ai=ai;void Copy (List L) if (this = =&L)cout”same 1 not copy !n”;else n=L.n ;for (int i=0; in;i+) ai=L.ai;cout”different! copied !n”;void Show ( ) for (int i=0 ;in-1;i+) coutai.; cout aiendl;void main ( ) int a110=1,2,3, a210=4,5, 6,7,8; List L1 (a1,3), L2(a2 ,5 );L1.Show ( ); L2.Show( );L2.Copy(L
19、1);L1. Show ( );L2.Show ( );L1. Copy (L1);L2.Copy (L2);L1.Show ( );L2.Show( );1.2.34.5.6.7.8different! copied !1.2.31.2.3different! copied !different! copied !1.2.31.2.3第二部分:1. 下列各函数,_ 不是类成员函数A. 构造函数 B. 析构函数 C. 友员函数 D. 拷贝初始化函数2. 下列有关静态数据成员的描述中._是错误的A. 说明静态数据成员时,前面要加修饰符static B. 静态数据成员要在类体外进行初始化C. 引用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 习题集 46
限制150内