实验九 类和对象的使用.doc_第1页
实验九 类和对象的使用.doc_第2页
实验九 类和对象的使用.doc_第3页
实验九 类和对象的使用.doc_第4页
实验九 类和对象的使用.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

实验九 类和对象的使用 学号:1452225 姓名:唐鑫一实验目的1. 掌握构造函数和析构函数的概念和使用方法。2. 掌握对象数组的使用方法。3. 掌握类静态成员的定义和使用方法。4. 掌握友元的定义和使用方法二实验任务1. 用类的成员函数求下列函数的值:在main函数中重复输入x(x的值必须通过对象初始化得到),多次求y的值。 程序:#include#includeusing namespace std;class Boxprivate:float x, y;public:void input();void cal();box;void Box:input()cout x;void Box:cal()if (x -3)y = x + 10;else if (x 5)y = sqrt(x + 3) + x;else y = exp(x);cout y=y endl;int main()int i;for (;)box.input();box.cal();cout 还要继续计算吗?;cin i;if (!i)break;system(pause);return 0;结果:2. 建立一个对象数组,内放5个学生的数据(学号、成绩),设计一个函数max,用指向对象的指针做为参数,在max函数(普通函数)中找出5个学号中成绩最高者,并输出其学号。程序:#includeusing namespace std;class studentpublic:long num;int score;int main()student a5;int i;for (i = 0; i 5; i+)cout 请输入第i+1个学生的学号、分数: ai.num ai.score;void max(student *);max(a);system(pause);return 0;void max(student *a)int i,j,k=a0.score;for (i = 1; i 5; i+)if (k ai.score)k = ai.score;j = i;cout 分数最高的学生的学号是: aj.num endl;结果:3. 定义一个String类:class String public : String(char ); /有参构造函数 Strin();/默认构造函数String(String &);/复制构造函数 String() delete p; /析构函数 void setstring(char ); /为对象赋值字符串 char *Substring(int,int); /求字符串从第n个位置到m个位置的子串; int length(); /返回字符串的长度 void print(); /输出字符串 private: char *p; /指针存放字符串首地址;在main主函数中实现该类的应用。int main( ) String s1(Chinse), s2=s1, s3; char *str; 。7程序:#include#includeusing namespace std;class Stringpublic:String(char); String();String(String &);String() delete p; void setstring(char); char *Substring(int, int); int length(); void print(); private:char *p; ;String:String(String&ti)p = ti.p;void String:setstring(char st)p=st;char *String:Substring(int a, int b)int i;string str = ;for (i = a - 1; i b; i+)str = str + pi;return &str0;String:String(char a)p = a;int String:length()int i;for (i = 0; i+)if (pi = )break;return i;void String:print()cout p;int main()String s1(Chinse), s2 = s1, s3;char *str;cout 字符串1:;s1.print();cout 长度 s1.length() endl;cout 字符串2:;s2.print();cout 长度 s2.length() endl;cout 字符串3:;s3.print();cout 长度 s3.length() endl;s3.setstring(Republic);cout 重置后,字符串3:;s3.print();cout 长度 s3.length() endl;str=s3.Substring(3, 8);cout 字符串3的字串:;int i;for (i = 0; i+)if (stri = )break;cout 长度 i endl;system(pause);return 0;4. 定义一个时钟类Time,实现对时间变化进行计算的有关操作。私有成员:hour ,minite , second,分别表示 小时、分、秒,其中小时在024之间,分和秒在060之间。构造函数形式为Time(int h , int f , int s )。 要求:(1) 定义2个成员函数,一个设置时间,一个显示时间;(2) 定义函数Time Time_plus(Time & int ),实现Time对象与整数值n(n代表秒)的加法运算。注意,小时、分、秒的取值范围。 (3) 定义函数Time Time_pp(Time &); 实现Time对象自增运算(前+), 即秒数加1;(4) 在main函数中,创建时钟对象,并完成上述函数调用。代码提示:int main() Time m1(23,59,59), m2, m3; m2=Time_plus(m1 , 10); m3=Time_pp(m1) ; m2.show(); m3.show(); return 0;程序:#include#includeusing namespace std;class Timeprivate:int hour, minute, second;public:Time(int h=0, int m=0, int s=0) :hour(h), minute(m), second(s) void show();static Time Time_set(Time &);Time Time_plus(Time &, int);Time Time_pp(Time &);void Time:show()cout hour : minute : second = 60) ti.second -= 60; +ti.minute; if (ti.minute = 60) ti.minute -= 60; +ti.hour; if (ti.hour = 24) ti.hour -= 24;return ti;Time Time_plus(Time & time, int n)Time tim=time;int i;for (i = 0; i n; i+)tim = Time:Time_set(tim);return tim;Time Time_pp(Time &time)Time tim;tim = Time:Time_set(time);return tim;int main()Time m1(23, 59, 59), m2, m3;m2 = Time_plus(m1, 10); m3 = Time_pp(m1);m2.show();m3.show();return 0;结果: 5. 商店销售某一商品,每天公布统一的折扣,同时允许销售人员在销售时灵活掌握售价,在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天3个销货员的销售情况为销货员(num) 销货件数(quantity) 销售价格(price)101 5 23.5102 12 24.56103 100 21.5请编写程序,计算出当日商品的总销售款sum以及每件商品的平均价格。要求用静态数据成员和静态成员函数。代码提示:class Productpublic:Product(int m, int q, float p):num(m),quantity(q),price(p) void total();static float average();static void display();private:int num; /销售员int quantity; /销售数量float price; /销售价格 static float discount; /商店统一折扣static float sum; /总销售款static int n; / 总销售数量;程序:#include#include#includeusing namespace std;class Productpublic:Product(int m, int q, float p) :num(m), quantity(q), price(p) void total();static float average();static void display();private:int num; int quantity; float price; static float discount; static float sum;static int n;float Product:sum = 0;int Product:n = 0;float Product:average() return (sum / n);void Product:total()n = n + quantity;sum = sum +quantity*price;void Product:display()cout 总销售款: sum 元 endl 每件商品平均价格: Product:average() endl;int main()int i;Product pro3 =Product(101, 5, 23.5),Product(102, 12, 24.56),Product(103, 100, 21.5);for (i = 0; i 3; i+)proi.total();Product:display();system(pause);return 0;结果: 6. 编写程序对用户数据进行管理,要求按姓名的字典顺序对用户信息进行排序。试定义表示用户信息的类person和处理用户信息的类compute实现上述功能。具体要求如下:(1)定义类person,其成员如下:(a) 私有成员:char name10,num10: 分别保存用户的姓名和电话号码。(2)定义类compute,类compute必须声明为person的友元类。其成员如下:(a) 私有成员:person pn3: 表示3个用户。(b)公用成员函数:l Void setdata(): 通过键盘输入3个用户的数据。l Void sort(): 将数组pn表示的用户信息按姓名排序。l Void print(): 按照指定格式输出用户信息。在主函数中定义一个compute对象,再通过键盘输入每个用户的基本信息,调用相关成员函数完成对类compute和person进行测试。代码提示:。class compute; /声明compute类class person /定义person类 public: friend class compute;private: char name10, num12;class compute /声明compute类public: void setdata(); void sort(); void print(); private: person pn3;。程序:#include#includeusing namespace std;class compute; class personpublic:friend class compute;private: char name10, num10;class compute public:void setdata();void sort();void print();private:person pn3;void compute:setdata()cout 请输入姓名和电话号码: endl; int i;for (i = 0; i pni.num;void compute:sort()int i,j;char a10;for (i = 0; i i+1;j-)if ()0 (pnj - 1.name)0)a10 = 10;10 = pnj - 1.name10;pnj - 1.name10 = a10;a10

温馨提示

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

评论

0/150

提交评论