实验三 题目加答案_第1页
实验三 题目加答案_第2页
实验三 题目加答案_第3页
实验三 题目加答案_第4页
实验三 题目加答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

(1)利用日期类Date, 设计学生类Stu,私有数据成员包括学号和姓名int id; char name20; 和表示入学日期内嵌时间对象Date roll;以及统计学生对象数目的静态成员number。公有成员函数实现以下功能:1) 定义各种构造函数,实现对成员的初始化,默认学生对象的名字是“ssdut”,默认入学日期为2013年8月28日,学号为当前学生数目number的值,每创建一个对象则number加1。若有Date d(9,1,2012), 则可定义学生数组Stu s3= Stu (”S1”, 8,3,1994), Stu (”S2”, d1 ), Stu(“S2”); 三个学生的学号自动设置为分别为1,2和3;2)显示学生相关信息的show(), 按清晰格式输出学生的所有信息 3)设置学生姓名的setName( char* n) 4) 获取number的静态成员函数 geNum()请给出完整的类定义,并在main()中进行测试。(1)#include#includeusing namespace std;class Dateprotected:int year, mouth, day;public:Date(int m=8 ,int d = 3, int y = 2013)year = y;mouth = m;day = d;Date(Date&);class stu:public Dateprivate:int id;char name20;static int number;public:stu(char *nam, Date rol);stu(char* nam, int , int, int );stu(char*);void show();static int genum();void setName(char* n);Date:Date(Date &date)year = date.year;mouth = date.mouth;day = date.day;int stu:genum()return +number;int stu:number = 0;stu:stu(char* nam, Date rol) :Date(rol)id = genum();strcpy(name, nam);stu:stu(char* nam, int mn, int dy, int yr) : Date(mn,dy,yr)id = genum();strcpy(name, nam);stu:stu(char *s)id = genum();strcpy(name, s);void stu:setName(char *n)strcpy(name, n);void stu:show()cout name= name id= id t入学时间 year年 mouth月 day日 endl;int main()Date d(9, 1, 2012);stu s3= stu (s1, 8,3,1994), stu (s2, d ), stu(s3);for (int i = 0; i 3; i+)si.show();return 0;(2)定义字符串类, 实现字符串的存储和操作。class myString public : myString (char *pn = 0) ; myString ( ) ; set(char *pn) ; void print();int getLen(); private: char *pStr ; / 指向存储字符串的空间 int size ; /包含字符的数目 ;void main() /测试类 myString s0, s1(“hello”);s0.print(); /输出“空字符串”s0.set(“world”); s0.print(); /输出“world”couts1.getLen()endl; /输出5myString s2 = s1;s2.print(); /输出“hello”运行该程序有何问题?为何会产生此类问题,请将去除此Bug。(2)、#include#includeusing namespace std;class myStringpublic : myString (char *pn = 0) ; myString () ; myString(myString &s); void set(char *pn) ; void print(); int getLen();private: char *pStr ; / 指向存储字符串的空间 int size ; int flag; /包含字符的数目 ;myString:myString(myString &s) flag=0; pStr=s.pStr;myString:myString(char *pn) flag=1; if(pn) pStr=new charstrlen(pn)+1; strcpy(pStr,pn); else pStr=new char10; strcpy(pStr,空字符串); /coutpStrendl;int myString:getLen() size=strlen(pStr); return size;void myString:set(char *pn) pStr=new charstrlen(pn)+1; strcpy(pStr,pn);myString:myString() if(flag) delete pStr;void myString:print() coutpStrendl;int main() /测试类 myString s0, s1(hello); s0.print(); /输出“空字符串” s0.set(world); s0.print(); /输出“world” couts1.getLen()endl; /输出 myString s2 = s1; s2.print(); /输出“hello” return 0;/运行该程序有何问题?为何会产生此类问题,请将去除此Bug。(3)利用点类Point,定义圆类Circle,私有数据成员包括圆心Point center和半径double radium; 和静态成员Pi = 3.14159; 公有成员函数实现以下功能:1)重载各种构造函数,允许将多个圆按如下形式其存储在数组中。 Circle cc3 = Circle(1,2,3.3), Circle( 3);2)定义常成员函数show( )输出信息,例如圆信息,例如 cc0 : (1, 2),r=3.3. cc1 : (0,0),r=3. cc2: (0,0), r=13)定义常成员函数area( )计算圆的面积4) 设计源判断点与圆的关系judge(), 若p在圆内或圆上返回true,否则返回false。思考是友元函数还是成员函数?能否利用亮点距离distance()函数(3)#includeusing namespace std;class Pointprivate: int x; int y;public: Point(int x,int y) this-x=x; this-y=y; friend class Circle;class Circleprivate: Point center; double radium;public: Circle(int x=0,int y=0,double r=1); void show(); void area(); void judge(Point p); static double Pi; static int h; static int i; static int j;double Circle:Pi=3.14159;int Circle:h=0;int Circle:i=0;int Circle:j=0;Circle:Circle(int x,int y,double r):center(x,y) radium=r;void Circle:show() coutcch: (center.x,center.y),r=radiumendl; h+;void Circle:area() coutcci: mianji=Pi*radium*radium=radium*radium) coutccj: falseendl; else coutccj: trueendl; j+;int main() Point p(3,4); Circle cc3= Circle(1,2,3.3),Circle(3); cc0.show(); cc1.show(); cc2.show(); cc0.area(); cc1.area(); cc0.judge(p); return 0;(4) 下面分别为整型数集合类和实型数集合数类,每个集合中最多放10个元素。定义并测试类。完成集合的设置,输出和复制功能。class Intset private:int set10;int num; /集合中元素个数public:Intset ( int i =0 ); /集合初始化,输入i个元素值void print( ) /打印集合中数据int get(int i); /返回第i个元素值void set( int i , int data); /设置第i个元素值为data ; class floatset private:float set10;int num; /集合中元素个数public:floatset (int i); /集合初始化,输入i个元素值void print( ) /打印集合中数据float get(int i); /返回第i个元素值void set( int i , float data); /设置第i个元素值为data;1) 在Intset中再增加一个成员函数,将对象的整型数据拷贝的到floatset的对象中此成员函数的原型为:void settofloat(floatset &set); /形参为拷贝的目标对象2)可以定义一个友元函数来实现上述的功能。(4)#includeusing namespace std;class floatsetprivate: float a10; int num; /集合中元素个数public: floatset(int i); /集合初始化,输入i个元素值 void print(); /打印集合中数据 float get(int i); /返回第i个元素值 void set( int i,float data); /设置第i个元素值为data friend class Intset;floatset:floatset(int i) num=i; int t; cout输入num个浮点型数据endl; for(t=0;tat;void floatset:print() int t; coutfloat类型输出:; for(t=0;tnum;t+)coutat ; coutendl;float floatset:get(int i) return ai-1;void floatset:set(int i,float data) ai=data;class Intsetprivate: int b10; int num; /集合中元素个数public: Intset(int i=0); /集合初始化,输入i个元素值 void print(); /打印集合中数据 int get(int i); /返回第i个元素值 void set(int i,int data); /设置第i个元素值为data void settofloat(floatset &set); /形参为拷贝的目标对象;Intset:Intset(int i) num=i; int t; cout输入num个整型数据endl; for(t=0;tbt;void Intset:print() int t; coutint类型输出; for(t=0;tnum;t+)coutbt ; coutendl;int Intset:get(int i) return bi-1;void Intset:set(int i,int data) bi-1=data;void Intset:settofloat(floatset &p) int t; for(t=0;tnum;t+)p.at=bt; cout将int拷贝到float中; for(t=0;tnum;t+)coutp.at ; coutendl;int main()int x,y;cout请输入一个小于的数:x; Intset a(x);a.print();cout返回第三个数据为a.get(3)endl;a.set(3,9); cout将第三个数据改为输出 a.get(3)endl;cout请输入一个小于的数:y; floatset b(y); b.print();cout返回第三个数据为b.get(3)endl; b.set(3,12.343); cout将第三个数据改为.343输出 b.get(3)endl;a.settofloat(b);return 0;(5)设计老师类,每个老师有姓名和研究方向,还可以指导若干个研究生;名研究生有姓名,专业和学号;编写一个程序,创建包含三个教师的数组,用初始化列表初始化教师的信息。输入每个老师的指导所有研究生的信息,输出所有教师的相关信息,包括指导学生情况。(5)#include#includeusing namespace std;class studentprivate: char Name20; char Direction20; int number;public: void set() cinName; cinDir

温馨提示

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

评论

0/150

提交评论