C语言的复习题ap.doc

上传人:文库蛋蛋多 文档编号:2384653 上传时间:2023-02-17 格式:DOC 页数:17 大小:66KB
返回 下载 相关 举报
C语言的复习题ap.doc_第1页
第1页 / 共17页
C语言的复习题ap.doc_第2页
第2页 / 共17页
C语言的复习题ap.doc_第3页
第3页 / 共17页
C语言的复习题ap.doc_第4页
第4页 / 共17页
C语言的复习题ap.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《C语言的复习题ap.doc》由会员分享,可在线阅读,更多相关《C语言的复习题ap.doc(17页珍藏版)》请在三一办公上搜索。

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

29、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 BA a1;int c;public:C(int k1,int k2,int k3,int k4):a1(k1),B(k2,k3)c=k4;coutc ;void main()C c1(1,2,3,4);coutendl; 四、简答题1. 什么是函数的重载?在C+中重载函数需要注意哪些问题?2. 构造函数和拷贝构造函数在什么情况下被自动调用? 3.定义析构函数时有哪些语法要求?4.类的派生方式有哪几种?如果类A以受保护的方式派生出B类,则A类的各成员在B类中的存取权限如何? 五、应用题。(成员函数的实现要求使用隐式内联方式)1设计一个表示学生信息的类,包括学号、姓名、性别和奖学金四项数据信息,公有成员函数包括:构造函数能够初始化该类的对象;Set( )函数能修改学生的奖学金数据;Display( )函数能够显示学生的全部信息。2.类

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号