习题一(带答案)_第1页
习题一(带答案)_第2页
习题一(带答案)_第3页
习题一(带答案)_第4页
习题一(带答案)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

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

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

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

11、nt();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.print();3

12、、# 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; cout<<”diao yong gou zao han shu 1.”<<endl; cout<<a<<t<<b<<endl; T(T

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

15、nclude<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 obj1,obj2(100,3.5);obj1.show("obj

16、1");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;6、#include<iostream.h>class Kpublic:int x;

17、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、#include<iostream>using namespace std;class

18、 TIME;class DATEpublic: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 TIMEpublic:TIME(int h=0,int m=0,int s=0)hour=h;minute=m;second=s;friend void DATE:DateTime(TIME&t);private:int hour,minute,second;void DATE:DateTime(TIME&t

19、)cout<<"Now is"<<year<<'.'<<month<<'.'<<day<<t.hour<<':'<<t.minute<<':'<<t.second<<'.'<<endl;int main()DATE b(2004,9,23); TIME t(10,20,50); b.DateTime(t); return 0;五、 编程题1、

20、定义一个图书类Book,类中包括name(书名)、author(作者)和sale(销售量)三个数据成员以及带三个参数的(所有参数都具有默认值)构造函数、析构函数、设置信息的函数和显示信息的函数。编写相应程序对所定义的类进行测试。2、设计一个点类Point,要求给出一个点的坐标,可以写出三维坐标形式(x,y,z)。实例化2个点对象,计算两点之间的距离,并输出显示结果。3、声明一个时钟类,包含小时Hour、分钟Minutes、秒Second等3个数据成员,有2个公有成员函数,分别是:时间设置函数SetTime(int NewH=0,int NewM=0,int NewS=0)和时间显示函数Show

21、Time()。在主函数mian()中。利用时间设置函数SetTime设置。时间,当调用时间显示函数ShowTime()时就显示设置的时间。4、编写3个名为add的重载函数,分别实现两个整数相加、两个单精度数相加、两个双精度数相加。5、编写程序,输入5个学生的数学和语文成绩,按总分从高到低排序。要求设计一个学生类Student实现该功能。习题答案一、 填空题1、继承,多态2、公用3、能,不能,不能4、protected,public5、初始化表,函数体6、107、缺省的构造函数8、X:X(X &x);9、protected10、m11、析构函数12、重载13、314、friend voi

22、d A:fun();15、析构16、private17、this18、119、private和protected20、非静态成员函数二、 选择题1、C2、C3、B4、A5、C6、D7、C8、C9、C10、D11、B12、C13、A14、C15、D三、 判断题1、2、3、×4、5、×6、7、8、9、×10、四、 分析题1、2005.3.32、2005.3.152005.3.183、10510 515 54、调用构造函数1.4 8调用构造函数2.4 820调用析构函数.调用析构函数.5、obj1:a=100b=1.2obj2:a=100b=3.5p->obj1:

23、a=100b=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>class Bookprivate:char name20;char author20;float sale;public:Book(char n="C+",char au="Li"

24、;,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 showBook()cout<<"name:"<<name<<endl;cout<<"author:"<<author<<

25、;endl;cout<<"sale:"<<sale<<endl;void main()Book b;b.showBook();b.setBook("datastructure","YanWeiMin",29);b.showBook();2、#include <iostream.h>#include <math.h>class pointpublic:void set();void getline(point);private:float x,y,z;void point:se

26、t()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<<"这两点的距离为"<<l<<endl;int main()point p1,p2;p1.set();p2.set(); p1.getline(p2);return 0;3、#include <iostr

27、eam>using namespace std;class clockpublic: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,int news)hour=newh;minute=newm;second=news;void clock:showtime()cout<<"现在的时间为:"cout<<hour<<"

28、;-"<<minute<<"-"<<second<<endl;int main()clock t1,t2,t3,t4;t1.settime(12,34,12);t1.showtime();t2.settime(12,34);t2.showtime();t3.settime(12);t3.showtime();t4.settime();t4.showtime();return 0;4、#include <iostream>using namespace std;class ADDpublic:int add

29、(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,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

30、;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<<'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;ADD a1,a2,a3;cout<<"请输入两个整型数:"int d1,d2;cin>>d1>>d2;m1=a1.add(d1,d2);cout<<"x y z"<<endl;a1.print

温馨提示

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

评论

0/150

提交评论