C期末复习题1及答案_第1页
C期末复习题1及答案_第2页
C期末复习题1及答案_第3页
C期末复习题1及答案_第4页
C期末复习题1及答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、 练习题1一、单项选择题(每小题2分,共计40分)1、面向对象的特征中,理解不恰当的是_ _。a、封装可以理解为将有关的属性和方法(即:动作)相结合,作为一个整体b、继承可以理解为在保留已有类的属性和方法基础上构造新类c、多态可以理解为一个类可以有很多方法,比如:可以输入数据也可以输出数据 d、抽象可以理解为将具体的对象或类进行概括,提炼出公共性质加以描述2下面有关类和对象的说法错误的是_ _。a、对象是类的一个实例b、一个对象只能属于一个具体的类c、一个类只能有一个对象d、类与对象的关系和数据类型和变量的关系相似3、bool flag; flag = true; 以下if条件中不成立的是_

2、_。a、if(!flag) b、if(flag) c、if(flag = true) d、if(flag != false)4、以下类型说明中, 错误的是_ _。 (a) x是int类型的, y是short类型的, x*y 是int类型的(b) x是int类型的, y是float类型的, x+y 是float类型的(c) x是int类型的, y是float类型的, x+int(y) 是int类型的(d) x是double类型的, y是double类型的, int(x)*y 是int类型的5、以下函数之间是重载关系的_ _。a、void fun(int a); 与int fun(int a);

3、b、void fun(); 与 int fun(int a);c、int fun(int a); 与 int fun(int c); d、int fun(int a); 与 int foo(int a);6、下列函数声明中正确的是_ _。a、int fun(int a, char b, float c=1.0); b、int fun(int a=0, char b, float c=1.0);c、int fun(int a=0, char b=a, float c); d、int fun(int a=0, char b, float c);7、以下程序的输出结果是_ _。#include &l

4、t;iostream> int main()using namespace std; int a=2,b=4;void foo(int x, int &y) foo(a,b); cout<<a<<","<<b<<endl;x = x+1; y = y+x; return 0; (a) 2,7 (b) 3,7 (c) 2,4 (d) 3,48、以下程序的输出结果是_ _。#include <iostream>using namespace std;class sun int main() public:

5、 sun s;sun() return 0;cout<<"sun created!" sun ()cout<<"sun destroyed!"(a) 无输出 (b) sun created!(c) sun destroyed! (d) sun created!sun destroyed!9、32位系统下,以下说法正确的是 _。class student / 成员函数略private:int num;student stu; a、student和stu都占4个字节的内存空间b、student不占内存空间,stu占4个字节的内存空间

6、c、stu不占内存空间,student占4个字节的内存空间 d、student不占内存空间,stu所占内存空间不确定10、32位系统下,以下说法正确的是_ _。class student class teststudent:public studentpublic: / 成员函数略 public: / 成员函数略private: private:int num; float score3; ; teststudent stu; a、teststudent和stu都占12个字节的内存空间b、teststudent不占内存空间,stu占16个字节的内存空间 c、teststudent不占内存空间,

7、stu占12个字节的内存空间 d、stu不占内存空间,teststudent占16个字节的内存空间11、在主函数中,以下输入语句正确的是_ _。class examplepublic:int num;example ex;a、cin>>num; b、cin>>example.num; c、cin>>ex:num; d、cin>>ex.num;12、主函数中定义a obja; 以下说法正确的是_ _。class apublic:a() num = 0; a(int n = 0) num = n; private:int num;a、执行构造函数a(

8、) b、执行构造函数a(int n = 0) c、执行其中任意一个构造函数 d、程序有歧义,通不过13、要在主函数中设置数据成员的值,正确的方法是_ _。class a public:void set(int a) aa = a; private:int aa;a、a.set(3); b、a:set(3); c、set(3); d、a obja; obja.set(3);14、在类内添加_ _构造函数的定义可以使主函数中的num正确初始化。class complex int main( )public: / 请添加构造函数 private: complex num(2.7,3.5);float

9、 real; / 实部 return 0;float imag; / 虚部 ;a、void complex() real = 2.7; imag = 3.5; b、void complex(float r, float i) r = real; i = imag;c、complex() real = 2.7; imag = 3.5; d、complex(float r, float i) real = r; imag = i;15、在a类内部定义其析构函数,格式正确的是_ _。a、a() b、int a()return 0; c、void a() d、int a(int a)return a;

10、16、以下说法中正确的是_ _。class myclasspublic:void set() const cin>>x;int get() const return x;int power() const return x*x;void display() const cout<<x<<endl;private:int x;a、set()函数的const应该去掉 b、get()函数的const应该去掉 c、power()函数的const应该去掉 d、display()函数的const应该去掉17、以下运算符中不能重载的是_ _。a、+ b、 : c、>

11、= d、 +18、内存分配会出错的是_ _。a、int size = 5; char asize;b、char a5;c、int size = 5; char * p = new char size;d、char * p = new char 5;19、关于c类对象对数据的访问权限,说法正确的是_ _。class a class b:public a class c:protected bpublic: public: private:void fa(); void fb(); char cc;private: protected: ; int aa; float bb; ;a、public:

12、 fa(), fb() protected: aa, bb private: cc b、protected: fa(), fb(), aa, bb private: ccc、protected: fa(), fb(),bb private: cc d、public: fa(), fb() protected: bb private: cc20、在student类内添加_ _构造函数的定义可以使主函数中的学生s正确初始化。class person class student:public personpublic: public: / 请添加构造函数person(string nam) name

13、 = nam; private: protected: int num; / 学号string name; / 姓名 ;int main() student s("lily",101);return 0;a、student(string nam,int n):person(nam) b、student(string nam,int n) num = n; name = nam; num = n; c、student(string nam):person(nam) d、student(int n) num = 0; num = n; 二、判断题(每小题1分,共计6分)1用cl

14、ass声明的类, 如果对其成员的访问属性不做声明,系统将其默认为public。2由于派生类继承了基类的构造和析构函数,所以派生类不必再定义自己的构造和析构函数。3类的成员函数和友元函数都有默认的this指针,所以在函数体中都可以直接访问类的成员。4成员函数在类外定义时要在函数名前面加类名: 。5静态内存分配发生在编译过程,动态内存分配发生在运行过程中。6重载实现编译时的多态,虚函数实现运行时的多态。三、阅读程序,写输出结果(每小题4分,共计24分)1#include <iostream> using namespace std;class samplepublic: sample(

15、int i) n = i; operator +( ) n+; void display( ) cout<<n<<endl; private: int n;int main( ) sample obj(5); obj+; obj.display( ); return 0; 2#include <iostream> using namespace std;class calculatepublic:calculate(int n):number(n)void product ()mul = mul * number;static int mul;private

16、:int number;int calculate:mul = 1;int main() calculate c1(3),c2(2),c3(6);c1. product( ); c2. product( ); c3. product( );cout<<calculate:mul<<endl;return 0;3#include <iostream> using namespace std;class box public: box(int h=1,int w=3,int len=4):height(h),width(w),length(len) int vo

17、lume(); private: int height; int width; int length; ;int box:volume()return height*width*length; int main() box a3= box(2), box(5,2), box(7,3,2) ; cout<<"volume of a0 is "<<a0.volume()<<endl; cout<<"volume of a0 is "<<a1.volume()<<endl; cout<

18、;<"volume of a0 is "<<a2.volume()<<endl; return 0; 4#include <iostream> using namespace std; class base public:void fun() cout<<"base called!"<<endl;class derived:public basepublic:void fun() cout<<"derived called!"<<endl;int

19、 main() base bas,*p;derived der;p = &bas; p->fun(); p = &der;p->fun();return 0;5#include <iostream> using namespace std; class base public:virtual void fun() cout<<"base called!"<<endl;class derived:public basepublic:void fun() cout<<"derived call

20、ed!"<<endl;int main() base bas,*p;derived der;p = &bas; p->fun(); p = &der;p->fun();return 0;6#include <iostream>using namespace std;class father public:father() cout<<"father created!"<<endl;father() cout<<"father destroyed!"<&

21、lt;endl;class sun:public fatherpublic:sun() cout<<"sun created!"<<endl;sun() cout<<"sun destroyed!"<<endl;int main() sun s;return 0;四、编程题(共计30分)1. 设计一个电话phone类,保护属性:电话号码 string number, 公有动作:打电话call ,来电响铃ring,接电话pickup,挂电话hangup。(类的格式 2分)要求:1) phone创建对象时,通过

22、参数传递方式,number得到初始化(3分)2) a电话给b电话打电话,要在call函数中输出a号码给b号码打电话的信息,并引起b电话来电响铃。(3分)3)b电话来电响铃,要在ring函数中输出b号码电话响的信息。(2分)4)b接电话,要在pickup函数中输出b号码接电话和通话开始的信息。 (3分)5)a挂电话,要在hangup函数中输出a号码挂电话的信息,并输出a号码和b号码通话结束的信息。如果b挂电话,也一样输出b号码挂电话的信息,并输出a号码和b号码通话结束的信息。 (3分)2. 设计一个移动电话cellphone类,它公有继承自phone类。cellphone类新添加的私有属性:短信

23、内容string message, 新添加的公有动作:发短信send ,短信提示shortring,收短信receive。(类的格式 2分)要求:1) cellphone创建对象时,number 和message均得到初始化(4分)2) a电话给b电话发短信,要在send函数中输出a号码向b号码发送短信的信息,并引起b电话短信提示。(3分)3)b电话短信提示,要在shortring函数中输出b号码有新短信的信息,表示提示。(2分)4)b电话接收短信,要在receive函数中输出b号码接收到a号码的短信的信息,并输出信息内容。(3分)使用主函数如下:int main()cellphone a(&

24、quot;80825","你好!"),b("80600","速回电!"),c("80241","开会中!");a.call(b); / a打电话给b b.pickup(a); / b接电话a的电话,通话开始a.hangup(b); / a挂断电话,通话结束c.call(a); / c打电话给aa.pickup(c); / a接电话c的电话,通话开始 a.hangup(c); / a挂断c的电话,通话结束c.send(a); / c发送短信给aa.receive(c); / a收到c的短

25、信 b.send(c); / b发送短信给cc.receive(b); / c接收到b的短信return 0;要求此主函数对应的输出结果,与以下输出结果基本一致:80825 给 80600 打电话,等待连接80600 电话响80600 接电话,通话开始80825 挂断电话80825 和 80600 通话结束80241 给 80825 打电话,等待连接80825 电话响80825 接电话,通话开始80825 挂断电话80825 和 80241 通话结束80241 向 80825 发送短信80825 有新短信80825 接收到 80241 的短信 内容:开会中!80600 向 80241 发送短信

26、80241 有新短信80241 接收到 80600 的短信 内容:速回电! 练习题1一、单项选择题(每小题2分,共计40分)1、c 2c 3、a 4、d 5、b 6、a 7、a 8、d 9、b 10、b11、d 12d 13、d 14、d 15、a 16、a 17、b 18、a 19、c 20、a二、判断题(每小题1分,共计6分)fffttt三、阅读程序,写输出结果(每小题4分,共计24分)1结果:62结果:363结果:volume of a0 is 24volume of a1 is 40volume of a2 is 424结果:base called! base called!5结果:b

27、ase called! derived called!6结果:father created!sun created!sun destroyed!father destroyed!四、编程题(共计30分)1. 设计一个电话phone类,保护属性:电话号码 string number, 公有动作:打电话call ,来电响铃ring,接电话pickup,挂电话hangup。(类的格式 2分)要求:1) phone创建对象时,通过参数传递方式,number得到初始化(3分)2) a电话给b电话打电话,要在call函数中输出a号码给b号码打电话的信息,并引起b电话来电响铃。(3分)3)b电话来电响铃,要

28、在ring函数中输出b号码电话响的信息。(2分)4)b接电话,要在pickup函数中输出b号码接电话和通话开始的信息。 (3分)5)a挂电话,要在hangup函数中输出a号码挂电话的信息,并输出a号码和b号码通话结束的信息。如果b挂电话,也一样输出b号码挂电话的信息,并输出a号码和b号码通话结束的信息。 (3分)2. 设计一个移动电话cellphone类,它公有继承自phone类。cellphone类新添加的私有属性:短信内容string message, 新添加的公有动作:发短信send ,短信提示shortring,收短信receive。(类的格式 2分)要求:1) cellphone创建

29、对象时,number 和message均得到初始化(4分)2) a电话给b电话发短信,要在send函数中输出a号码向b号码发送短信的信息,并引起b电话短信提示。(3分)3)b电话短信提示,要在shortring函数中输出b号码有新短信的信息,表示提示。(2分)4)b电话接收短信,要在receive函数中输出b号码接收到a号码的短信的信息,并输出信息内容。(3分)参考程序:#include <iostream>#include <string>using namespace std;class phone public:phone(string n);void call(

30、phone & p);void ring();void pickup(phone & p);void hangup(phone & p);protected:string number; /号码;phone:phone(string n)number = n;void phone:call(phone & p)cout<<number<<" 给 "<<p.number<<" 打电话,等待连接"<<endl;p.ring();void phone:ring()cou

31、t<<number<<" 电话响"<<endl;void phone:pickup(phone & p)cout<<number<<" 接电话,通话开始"<<endl;void phone:hangup(phone & p) cout<<number<<" 挂断电话"<<endl; cout<<number<<" 和 "<<p.number<<" 通话结束"<<

温馨提示

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

评论

0/150

提交评论