习题一(带答案).._第1页
习题一(带答案).._第2页
习题一(带答案).._第3页
习题一(带答案).._第4页
习题一(带答案).._第5页
免费预览已结束,剩余11页可下载查看

下载本文档

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

kok电子竞技:文档简介

1、习题习题中红色字体的题目是暂时没有讲到的,同学们可以暂时跳过。一、填空题1、面向对象的程序设计有四大特点,它们是抽象、封装、)、()。2、类中的成员使用特定的关键字指定不同的访问特性,其中()成员是提供给外部的接口,在类中和类外可见。3、 protected 成员的访问权限: 派生类 ()访问 protected 成员,派生类对象 ()访问protected 成员,本类的对象 ()访问 protected 成员(填:能与不能) 。4、C+语言中类成员的访问权限包括private 、 ()和()。5 、对一个类中的数据成员的初始化可以通过构造函数中的)实现,也可以通过构造函数中的 ()实现。6、

2、假定 AB 为一个类,则执行“ AB a10; ”语句时,系统自动调用该类的构造函数的次)。数为 (7、假定用户没有给一个名为 AB 的类定义构造函数,则系统为其隐含定义的构造函数为)。8、若类 X 中没有定义拷贝构造函数,则系统为类X 定义的默认拷贝构造函数的原型为)。9、类中的成员只能为该类的成员函数及该类的派生类中的成员函数访问,则应加上访问属)。10、假设一个类对象数组为am ,其中 m 为常变量,当离开它的作用域时,系统自动调用该类析构函数的次数为()。11、设 p 为指向一个动态对象的指针变量,则执行delete p 语句时,将自动调用该类的)。12、在一个类中定义了全部是默认参数

3、的构造函数后,不能再定义()构造函数。13、假设有一个 Test 类,则执行“ Test a(5),b2,*p; ”语句时,自动调用该类构造函数的次数为()。14、若将类A的成员函数“ void fun(); ”定义为一个类B的友元函数,则应在类 B的定义中加一条语句: ()。15、当一个对象作用域结束时,系统自动调用()函数来释放存储空间。16、对于类中定义的成员,其默认访问权限为()。17、每个对象都有一个指向自身的指针,称为()指针,通过使用它来确定其自身的地址。18、一个类有()个析构函数。19、在类内定义的()数据不能被不属于该类的成员函数存取。20、 this 指针是一个隐含的指针

4、,它隐含于每个类的()中。二、选择题1、以下关于类和对象的叙述错误的是)。2、A. 对象是类的一个实例C. 一个类只能有一个对象以下关于构造函数的叙述错误的是B. 任何一个对象都归属于一个具体的类D. 类与对象的关系和数据类型与变量的关系相似)。A. 构造函数名必须与类名相同B. 构造函数在定义对象时自动执行3、C. 构造函数无任何函数类型以下关于析构函数的叙述错误的是D. 在一个类中构造函数又且仅有一个)。A. 一个类中只能定义一个析构函数B. 析构函数和构造函数一样可以有形参4、C. 析构函数不允许有返回值以下叙述正确的是()。D. 析构函数名前必须冠有符号“ ”A. 在类中不作特别说明的

5、数据成员均为私有类型B. 在类中不作特别说明的成员函数均为公有类型C. 类成员的定义必须放在类体内D. 类成员的定义必须是成员变量在前,成员函数在后5、以下叙述不正确的是()。A. 一个类的所有对象都有各自的数据成员,它们共享成员函数B. 一个类中可以有多个同名的成员函数C. 一个类中可以有多个构造函数、多个析构函数D. 类成员的定义必须是成员变量在前,成员函数在后6、以下不属于构造函数特征的是()。A. 构造函数名与类名相同B. 构造函数可以重载7、下列函数中,是类 MyClass 的析构函数的是()。8、A. Myclass(); B. MyClass();关于类和对象不正确的说法是()。

6、C. MyClass(); D. MyClass(int n);A. 类是一种类型,它封装了数据和操作B. 对象是类的实例C. 一个类的对象只有一个D. 一个对象必属于某个类9、在类定义的外部,可以被访问的成员有()。A. 所有类成员B. private 或 protected 的类成员C. public 的类成员D. public 或 private 的类成员10、关于 this 指针的说法错误的是()。A. this 指针不能被显示说明B. 当创建一个对象后, this 指针就指向该对象C. 成员函数拥有 this 指针D. 静态成员函数拥有 this 指针11、下面有关 new 运算符的

7、描述,错误的是()。A. 使用 new 运算符创建对象时,会调用类的构造函数B. 使用 new 运算符创建数组时,必须定义初始值C. 使用new运算符创建的对象可以使用delete运算符删除D. new 运算符可以用来动态创建对象和对象数组12、下面关于成员函数的特征中,说法错误的是()。A. 成员函数可以重载B. 成员函数可以是静态的C. 成员函数一定是内联函数D. 成员函数可以设置参数的默认值13、在通常情况下,复制构造函数的参数是()。A. 某个对象的引用名B. 某个对象名C. 某个对象的成员名D. 某个对象指针名14、在类体外定义成员函数时,需要在函数名前加上(A. 类对象B. 类标记

8、C. 类名和作用域运算符D. 域运算符15、下面关于时间类 Time 定义的说法中,正确的是()。)。Time time1,time30;Time *pTime;Time &time2=time1;A. time30 是一个数组,它具有 30 个元素B. pTime 就是指向 Time 类对象的指针1、C. time2 是一个类对象引用,定义时必须对其进行初始化,使之成为对象time1 的别名D. 以上答案都正确三、判断题1、任何一个对象只能属于一个具体的类。2、构造函数可以有参数,但不可以有返回值。3、一个类可以有多个构造函数,也可以有多个析构函数。4、对一个类中数据成员的初始化可以

9、通过构造函数中的参数初始化表实现。5、使用 new 运算符动态创建对象数组时必须指定初始值。6、一个类的所有对象都有各自的数据成员,它们共享成员函数。7、一个类中可以有多个同名的成员函数。8、类成员的定义可以是数据成员在前,成员函数在后。9、类的静态成员函数的初始化工作要放在类外进行。10、类与对象的关系和数据类型与变量的关系相似。四、分析题#include <iostream.h> class Datepublic:void set(int y, int m, int d); void print();private: int year, month, day;void Date

10、:set(int y, int m, int d) year = y; month = m; day = d;void Date:print() cout<<year<<"."<<month<<"."<<day<<endl;void main()Date t1; t1.set(2005,3,3); t1.print();2、#include <iostream.h> class Date public:Date ();Date (int y, int m, int d);

11、void print();private:int year, month, day;Date: Date ():year(2005),month(3),day(15)Date: Date (int y, int m, int d):year(y),month(m),day(d) void Date:print() cout<<year<<"."<<month<<"."<<day<<endl;void main()Date t1,t2(2005,3,18) ;t1.print();t2

12、.print();3、# include<iostream.h> class Apublic:int f1();int f2();void setx(int m) x=m; cout<<x<<endl; void sety(int n ) y= n; cout<<y<<endl; int getx() return x; int gety() return y; private:int x, y;int A:f1() return x+y;int A:f2() return x-y; void main()A a;a.setx(10)

13、; a.sety(5);cout<<a.getx()<< t ''<<gety()<<endl; cout<<a.f1()<< t ' <<a.f2()<<endl;4、# include<iostream.h> class T public:T(int x, int y)a=x; b=y;” <<endl;cout<< ” diao yong gou zao han shu 1. cout<<a<< 't

14、' <<b<<endl;T(T &d)” <<endl;cout<< ” diao yong gou zao han shu 2. cout<< d.a<< t ' <<d.b<<endl;” <<endl;T() cout<< ” diao yong xi gou han shu. int add(int x,int y=10) return x+y;private:int a,b;void main()T d1(4,8);T d2(d1);cout

15、<<d2.add(10)<<endl;5、#include<iostream.h>class Aint a;double b;public:A(int x=100,double y=1.2)a=x;b=y; void show(char *pt) cout<<pt<<":"<<endl;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;void main()A o

16、bj1,obj2(100,3.5);obj1.show("obj1");obj2.show("obj2");A *p;p=&obj1;p->show("p->obj1");(*p).show("(*p)obj1");p=&obj2;p->show("p->obj2");(*p).show("(*p)obj2"); p=new A;p->show("p->new");delete p;#include<

17、;iostream.h>6、class Kpublic:int x;K (int i)x=i;void fun1(int j)x+=j;cout<<"fun1:"<<x<<endl;void fun2(int j)x+=j;cout<<"fun2:"<<x<<endl; ;void main()K c1(3),c2(6); void(K:*pfun)(int)=K:fun1; (c1.*pfun)(6); pfun=K:fun2;(c2.*pfun)(12);7、#includ

18、e<iostream> using namespace std; class TIME; class DATE public:DATE(int a=2004,int m=9,int b=23) year=a; month=m; day=b;void DateTime(TIME &t); private:int year,month,day; class TIME public:TIME(int h=0,int m=0,int s=0) hour=h; minute=m; second=s; friend void DA TE:DateTime(TIME&t); pr

19、ivate:int hour,minute,second;void DATE:DateTime(TIME&t)cout<<"Now is"<<year<<'.'<<month<<'.'<<day<<t.hour<<':'<<t.minute<<':'<<t.second<<'.'<<endl;int main()DATE b(2004

20、,9,23);TIME t(10,20,50);b.DateTime(t);return 0;五、编程题1定义一个图书类 Book,类中包括name (书名)、author (作者)和sale (销售量)三个数 据成员以及带三个参数的 (所有参数都具有默认值)构造函数、析构函数、设置信息的函数 和显示信息的函数。编写相应程序对所定义的类进行测试。2 个公 和时间 当调用2、设计一个点类 Point,要求给出一个点的坐标,可以写出三维坐标形式( x,y,z)。实例化2 个点对象,计算两点之间的距离,并输出显示结果。3、 声明一个时钟类,包含小时 Hour、分钟Mi nu tes、秒Seco nd

21、等3个数据成员,有 有成员函数, 分别是: 时间设置函数 SetTime(int NewH=0,int NewM=0,int NewS=0 ) 显示函数ShowTime()。在主函数 mian()中。利用时间设置函数 SetTime设置。时间, 时间显示函数 ShowTime() 时就显示设置的时间。4、编写 3 个名为 add 的重载函数,分别实现两个整数相加、两个单精度数相加、两个双精 度数相加。5、编写程序,输入 5 个学生的数学和语文成绩,按总分从高到低排序。要求设计一个学生 类Student实现该功能。习题答案一、填空题 继承,多态 公用 能,不能,不能 protected, pub

22、lic 初始化表,函数体10 缺省的构造函数X:X(X &x); protected1、2、3、4、5、6、7、8、9、10、m11、析构函数12、重载13、314、friend void A:fun();15、析构16、private17、this18、119、private 和 protected20、非静态成员函数二、选择题1、C2、 C11、 B 12、C 三、判断题12四、分析题3、 B4、 A5、 C6、 D7、 C8、 C9、 C10、 D13、 A14、 C15、 D3、x4.V5、X6>V7.V8>V9、x101、2005.3.3 2、2005.3.152

23、005.3.18 3、101015 4、调用构造函数 1.4调用构造函数 2.20 调用析构函数 . 调用析构函数 .5、obj1: a=100 b=1.2 obj2: a=100 b=3.5 p->obj1: a=100 b=1.2(*p)obj1:a=100b=1.2p->obj2:a=100b=3.5(*p)obj2:a=100b=3.5p->new:a=100b=1.26、fun1:9fun2:187、五、Now is2004.9.2310:20:50.编程题1、#include <iostream.h>#include <string.h>c

24、lass Bookprivate:char name20;char author20;float sale;public:Book(char n="C+",char au="Li",float s=0) strcpy(name,n);strcpy(author,au);sale=s;Book()cout<<" 析构函数被调用! "<<endl;void setBook(char n,char au,float s)strcpy(name,n); strcpy(author,au); sale=s;void sh

25、owBook()cout<<"name:"<<name<<endl;cout<<"author:"<<author<<endl; cout<<"sale:"<<sale<<endl;void main()Book b;b.showBook();b.setBook("datastructure","YanWeiMin",29); b.showBook();2、 #include <io

26、stream.h> #include <math.h> class pointpublic:void set();void getline(point);private:float x,y,z;void point:set()cout<<" 请输入坐标值 :" cin>>x>>y>>z;void point:getline(point p2)double l;l=sqrt(x-p2.x)*(x-p2.x)+(y-p2.y)*(y-p2.y)+(z-p2.z)*(z-p2.z);cout<<&quo

27、t; 这两点的距离为 "<<l<<endl;int main()point p1,p2;p1.set();p2.set();p1.getline(p2);return 0;#include <iostream> using namespace std; class clock public:void settime(int newh=0,int newm=0,int news=0); void showtime();private:int hour,minute,second;void clock:settime(int newh,int newm

28、,int news)hour=newh; minute=newm; second=news;void clock:showtime() cout<<" 现在的时间为 :" cout<<hour<<"-"<<minute<<"-"<<second<<endl;int main()clock t1,t2,t3,t4; t1.settime(12,34,12); t1.showtime(); t2.settime(12,34); t2.showtime();

29、 t3.settime(12); t3.showtime(); t4.settime(); t4.showtime(); return 0;4、 #include <iostream>using namespace std; class ADDpublic:int add(int xx,int yy); float add(float xx,float yy); double add(double xx,double yy); void print(int z);void print(float z);void print(double z); private:int x1,y1,

30、z1; float x2,y2,z2; double x3,y3,z3;int ADD:add(int xx,int yy)x1=xx;y1=yy; z1=x1+y1;return z1;float ADD:add(float xx,float yy)x2=xx;y2=yy; z2=x2+y2; return z2;double ADD:add(double xx,double yy) x3=xx;y3=yy; z3=x3+y3; return z3;void ADD: print(int z)cout<< x1<<'t'<< y1<&

31、lt;'t'<< z<<endl; void ADD: print(float z)cout<< x2<<'t'<< y2<<'t'<< z<<endl; void ADD: print(double z)cout<< x3<<'t'<< y3<<'t'<< z<<endl; int main()int m1; float m2; double m3

32、;ADD a1,a2,a3;cout<<" 请输入两个整型数 :"5、int d1,d2; cin>>d1>>d2; m1=a1.add(d1,d2); cout<<"xz"<<endl;ya1.print(m1);cout<<" 请输入两个单精度实型数 float b1,b2;cin>>b1>>b2;m2=a2.add(b1,b2);cout<<"x.H.z"<<endl;ya2.print(m2);co

33、ut<<" 请输入两个双精度实型数 :"double c1,c2;cin>>c1>>c2;m3=a3.add(c1,c2);cout<<"xya3.print(m3); return 0;z"<<endl;#include<iostream.h>class Studentint english,computer,total;public:void getscore();void display();void sort(Student*);Student();void Student:

34、getscore()cout<<" 输入数学成绩 :" cin>>english;cout<<" 输入语文成绩 :" cin>>computer;total=english+computer;void Student:display()cout<<"数学="<<englishvv"语文="<<computer<<"总分="<<total<<endl;void main()Student *A5,*tmp;int i,n=5;for (int j=0;j<n;j+)Aj=new Student;cout<<"学生"<<j+1<<endl;Aj->getscore();for(j=0;j<n-1;j+)for(i=0;i<n-1;i+) tmp=Ai;Ai=Ai+1=tmp;cout<<endl<<" 排序结果如下 :"<<endl;for(i=0;i<n;i+)Ai->display();

温馨提示

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

kok电子竞技:最新文档

评论

0/150

提交评论