C语言的复习题ap_第1页
C语言的复习题ap_第2页
C语言的复习题ap_第3页
C语言的复习题ap_第4页
C语言的复习题ap_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、c+程序设计练习题一、选择题(四选一)1.以下选项中,哪一个是c+的合法运算符( )(a)cout (b)friend (c)int (d)new1. ( )是给对象取一个别名。(a)指针 (b)引用 (c)枚举 (d)结构2.下面哪一个是 void bc(int a, int b);的重载函数?( )(a) float bc(int x, int y);(b) void bc(int a, char b);(c) float bc(int a, int b, int c=0);(d) int bc(int a, int b);3.下列语句中错误的是( )(a)int *p=new int(1

2、0); (b) int *p=new int10; (c) int *p=new int (d) int *p=new int400;4.假设已有定义const char *const name=”chen”;下面的语句中正确的是( )(a) name3=a; (b) name=”lin” (c) name=new char5; (d) cout29.对象成员的引用方法有( )种。(a) 1 (b) 2 (c) 3 (d) 430.下列关于继承的说法中,错误的是( )(a)析构函数不能继承(b)默认的继承方式是私有继承(c)派生类的成员,除了它自己的成员外,还包含了它基类的成员(d)派生类继承

3、的基类成员的访问权限到派生类保持不变31.使用派生类的主要原因是( )(a)提高代码的可重用性 (b) 提高程序的运行效率 (c) 加强类的封装性 (d) 实现数据的隐蔽性32.在c+中继承方式有( )种(a) 1 (b) 2 (c) 3(d) 433.假设已经定义好了一个类student,现在要定义类derived,它是从student私有派生的,定义类derived的正确写法是( )(a)class derived:student private. (b)class derived:student public. (c)class derived: private student . (d

4、) class derived: public student .34.下列关于虚函数描述,正确的是( )(a) 构造函数不能是虚函数 (b)析构函数不能是虚函数 (c) 虚函数可以是友元函数 (d) 虚函数可以是静态函数.35.要实现动态联编,派生类中的虚函数( )(a)返回的类型可以与虚函数的原型不同(b)参数的个数可以与虚函数的原型不同(c)参数类型可以与虚函数的原型不同 (d)以上都不对36.如果在基类中将声明为不带返回值的纯虚函数,正确的写法是( )(a)virtual show()=0; (b) virtual void show; (c) virtual void show()=

5、0; (d) void show()=0 virtual;37一个( )允许用户为函数定义一种模式,使得函数中的参数能取得多种数据类型。(a) 函数模板 (b) 模板函数 (c)类模板 (d) 模板类38.模板的使用是为了( )(a)提高代码的重用性 (b)提高代码的运行效率 (c)加强类的封装性 (d)实现多态性39.使用语句打开文件后,则( )(a)该文件只能用于输出 (b)该文件只能用于输入 (c)该文件既可以用于输出,也可以用于输入 (d)若该文件存在,则清除该文件的内容40. 下列关于文件的描述,正确的是( )(a) c+的i/o系统中有1个文件指针,一个名字为put,另一个名字为g

6、et (b) c+的i/o系统中有2个文件指针, 一个为put,另一个为get (c) c+的i/o系统中, 文件指针只能顺序移动。 (d) c+的i/o系统中, 不进行文件读写时,文件指针不能移动。二、填空1. 在设计一个类的时候,有时需要将数据成员定义为受保护的类型,这时可以使用关键字 protected ,再在后面加上“:”号。2. /定义长方形的类rectclass rect float a,b,area(); public: rect a=8;b=6;/构造函数 /其他成员函数略;3. /声明友元函数class classone int x; friend void mf(class

7、one);/声明友元函数,该函数无返回值public: /其他成员函数略;4. /静态成员class ck double cunkuan;public: static double lixi; /将lixi声明为一个静态成员 ck(double c)cunkuan=c; void modlixi(double); void callixi(int m=1); ;5. 运算符被重载后,不能改变 优先级 、结合性和语法结构6. /设计类a,主函数实现先输出两数,再输出两数中较大者class aint x,y;public:void ask1(int a=0,int b=0)x=a;y=b;void

8、 ask2()coutx=xty=yy?x:y); ;void main()a a;a.ask1(3,6);a.ask2();cout “” endl;7. /定义time类,class time int h,m,s;public: void set(int,int,int); void display()couthour:minute:secondendl; / 成员函数set( )在类外单独实现 time :set(int h,int m,int s) h=h,m=m,s=s; 8. /重载+运算符,实现两个复数相加class complex double r,i;/复数的实部和虚部pub

9、lic: /外部接口complex(double real,double imag)r=real;i=imag; complex operator+ (complex & c2);/重载运算符“+”的函数声明void display();complex & complexoperator+ (complex & c2) /重载运算符“+”的函数实现return complex(r+c2.r, i+c2.i); 9. /设计一个名为myclass的类,主函数在输出两数后再输出它们的和。class myclassint x,y;public:void ask1(int a=10,int b=10)

10、x=a;y=b;void ask2()coutx=xty=yendl;int ask3() return x+y (11) ;10.在定义b类为a类的派生类的时候,如果不明确指定派生方式,则默认为 私有 (12) 派生。11.在一个类中包含两种成员,它们分别称为 数据成员 (13) 和 函数成员 (14) 。12.所谓多态性是指:由(15) 继承 而产生的相关的不同的类,其对象对同一消息会作出不同的响应。13.抽象的作用是表示同一类事物的本质,c和c+中的(16) 结构体和类 就是对一批具体的数的抽象。14成员函数与一般函数的区别是:它是(17) 类 的成员,出现在类体中。15成员函数在类外定

11、义时,必须在函数名前面加上 (18) 类名 和(19)返回值类型 ,用于限定函数是属于哪个类的。16.重载的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少有一个是类对象或 。17面向对象程序设计有4个主要特点: 抽象 、 封装 、继承 和 多态 。18关于基类和派生类的关系,可以表述为:派生类是基类的 具体化 ,而基类则是派生类的 抽象 。19从系统实现的角度看,多态性分为两类: 多态性和 多态性。20虚函数的作用就是用来允许在派生类中定义与 基类同名的函数 。三、阅读程序,写出运行结果1. void main()char str=dalian,*p;p=str;coutp+4en

12、dl; an2. void swap(int x, int y)int temp=x;x=y;y=temp;void main( )int a=1, b=2;cout “a=” a “b=” b ends;swap(a,b);cout “a=” a “b=” b endl; a=1b=2 a=1b=23. class myclassprivate:int a, b;public:myclass(int x=3, int y=6)a=x;b=y; void display( )couta*b;void main()myclass n1(2),n2;n2.display(); 184. class

13、 sample int n;public: sample()n=10; sample(int m)n=m; int add(sample &s1,sample &s2) int x=s1.n+s2.n; return x; ;void main() sample s1,s2(6),s3; couts3.add(s1,s2); 165. #include int n=0;void display() coutn=nendl;class a int x,y;public: a() x=0;y=0;n+; a(int a,int b) x=a;y=b; n+; a(a&a) x=a.x;y=a.y;

14、 n+; void display(); a()n+;/主函数void main() a a ; a b(a), c(37,56); display(); n=56. class a int xa;public: a(int x) xa=x; int geta( ) return xa; ;class b:public a int xb;public: b(int x):a(x+10) xb=x; void dispb( ) coutgeta( )+xbendl; ;void main() b b(5); b.dispb( ); 207. class myclasschar ch;public

15、:myclass( )ch=a;coutch执行无参构造函数;myclass(char c)ch=c;coutch执行有参构造函数;void print( )coutthe char is chendl;myclass( )coutchn= s1.n % s2.n; return (*this); void disp()coutn=nendl;void main() sample s1(10),s2(3),s3,s4; s4=s3.sub(s1,s2); couts4:;s4.disp(); s4: n=19. #include #include class yc1;class yc2;dou

16、ble f(double a,double b,double c)if(c=0)throw yc1();else if(a+b/c0)throw yc2();else return sqrt(a+b/c);void f1(double a,double b,double c)try double s=f(a,b,c);cout结果为:sendlendl;catch(yc1) cout除数不可以为零!endl; return;catch(yc2) cout负数不可以开根号!endl; return;void main()double a=3,b=-50,c=5;f1(a,b,c);负数不可以开根

17、号!10. class aint a;public:a(int i)a=i;couta ;class b:public aint b;public:b(int k1,int k2):a(k1)b=k2;coutb ;class c:public bb b1;public:c(int k1,int k2,int k3):b1(k1,k2),b(k3,k1+k2) ;void main()c c1(1,2,3);coutendl; 3 3 1 211. void main() int a=10,20,30,40,50,60,70,80,*p1,*p2;p1=a+3;p2=+p1;cout*p1+*

18、p2endl; 12. void swap(int &x, int y)int temp=x;x=y;y=temp;void main( )int a=1, b=2;cout “a=” a “b=” b ends;swap(a,b);cout “a=” a “b=” b endl; 13. #include int s=0;class myclassint a, b;public:myclass(int x=4, int y=5)a=x;b=y;s+=a;void main()myclass n1(2,8),n2(6),n3;coutsa=s1.a - s2.a; return (*this)

19、; void disp()couta ;void main() a s1(3),s2; a s3; s3.f1(s1,s2); s3.disp(); 15. #include int n=0;class a int x,y;public: a() x=0;y=0;n+; a(int,int); a(a&); void display(); a()n+;a:a(int a,int b) x=a;y=b; n+;a:a(a&a) x=a.x;y=a.y; n+;void a:display() coutn=nendl;/主函数void main() a a , b(37,56); a b(a);

20、a.display(); 16. /单继承class classa int xa;public: classa(int x)xa=x; int get( )return xa;class b:public classa int xb;public: b(int x):classa(x+5)xb=x; void dispb( ) coutget( )+xbendl;void main() b b(2); b.dispb( ); 17. #include class myclasschar ch;public:myclass()ch=x;coutch对象被初始化;myclass(char c)ch

21、=c;coutch对象被自动建立;void print()coutthe char is chendl;myclass()coutch对象被释放;void main() myclass c2(y); 18. #include #include class yc1;class yc2;double f(double a,double b,double c)if(c=0)throw yc1();else if(a+b/c0)throw yc2();else return sqrt(a+b/c);void f1(double a,double b,double c)try double s=f(a,

22、b,c);cout结果为:sendlendl;catch(yc1)cout除数不可以为零!endl; return;catch(yc2)cout负数不可以开根号!endl; return;void main()double a=18,b=20,c=0;f1(a,b,c); 19. #include class myclassint a, b, max, min;public:myclass(int i, int j)a=i;b=j;max=(ab?a:b);min=(ab?a:b);friend int result(myclass& x);int result(myclass& x) ret

23、urn x.min * x.min - x.max * x.max;void main()myclass n(3,4);cout result(n) endl; 20. #include class aint a;待添加的隐藏文字内容3public:a(int i)a=i*2;couta ;class b:public aint b;public:b(int k1,int k2):a(k1)b=k2*k2;coutb ;class c:public ba a1;int c;public:c(int k1,int k2,int k3,int k4):a1(k1),b(k2,k3)c=k4/3;c

24、outc ;void main()c c1(1,2,3,4); 21. class cpppublic:cpp(int x=6)a=x;b=x+2; void display( )couta*b;private:int a, b;void main()cpp n1(2),n2;n2.display(); 22. class b int x,y;public: void set(int &a,int b=1)x=b;y=a; void swap( ) int t; if(x!=y)t=x;x=y;y=t; void display() coutx+yendl;void main()b b2;in

25、t a=5,b=8;b2.set(a,b);b2.display();23. int count=0;void print() coutcountendl;class a int x,y;public: a( ) x=0;y=0;count+; a(int a,int b) x=a;y=b; count+; a(a & a) x=a.x;y=a.y; count+; void print(); a()count+;void main() a a ; a b(a), c(37,56); print(); 24.class b1public:b1(int i) cout i;class b2pub

26、lic:b2(int j) cout j;class b3public:b3()cout *;class c: public b2, public b3, public b1b2 b2;public:c(int a, int b, int c):b1(a),b2(c),b2(b);void main()c object1(2,3,4); coutendl; 25.class myclass int n;public: myclass() myclass(int m)n=m; myclass & multiply(myclass &s1,myclass &s2) n=s1.n*s2.n; ret

27、urn (*this); void disp()coutn ;void main() myclass s1(3),s2(6),s3,s4; s4=s3.multiply(s1,s2); s3.disp(); s4.disp(); 26.class myclasschar ch;public:myclass()ch=m;myclass(char c)ch=c+1; void display()coutch=chendl;void main() myclass char1; char1.display(); 27.#include #include class yc1;class yc2;doub

28、le f(double a,double b,double c)if(c=0)throw yc1();else if(a+b/c0)throw yc2();else return sqrt(a+b/c);void f1(double a,double b,double c)try double s=f(a,b,c);couts=sendl;catch(yc1)cout除数不可以为零!endl; return;catch(yc2)cout负数不可以开根号!endl; return;void main()double a=22,b=-30,c=5;f1(a,b,c); 28.class aint a;public:a(int i)a=i;couta ;class b:public aint b;public:b(int k1,in

温馨提示

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

评论

0/150

提交评论