面向对象A面向对象习题

  • 格式:doc
  • 大小:94.00 KB
  • 文档页数:18

第8章习题:8-1、设计Date类,输出合法日期。

#include <iostream>using namespace std;//类定义//class Date{ int year; //存储日期的年份int month;//存储日期的月份int day;//存储日期的天数public:bool setDate(const int,const int,const int);void display(void);char * getMonth(const int);};//类的实现////设置成员变量////mm:月份,dd:天数,yy:年份////返回值:如果成功赋值则返回true,否则返回false。

// char* Date::getMonth(const int m ){ if(m==1)return "January";else if(m==2)return "February";else if(m==3)return "March";else if(m==4)return "April";else if(m==5)return "May";else if(m==6)return "June";else if(m==7)return "July";else if(m==8)return "August";else if(m==9)return "September";else if(m==10)return "October";else if(m==11)return "November";elsereturn "December";}//设置成员变量////参数:mm:月份,dd:天数,yy:年份////返回值:如果成功赋值则返回true,否则返回false//bool Date::setDate(const int mm,const int dd,const int yy){ if(mm<1 || mm>12) return false;if(dd<1 || dd>31) return false;year=yy;month=mm;day=dd;return true;}//在屏幕上显示日期//void Date::display(void){ // 按照"12-25-2004"的形式输出日期cout<<month<<"-"<<day<<"-"<<year<<"\n";// 按照"December 25,2004"的形式输出日期cout<<getMonth(month)<<" "<<day<<", "<<year<<"\n";// 按照"25 December 2004"的形式输出日期cout<<day<<" "<<getMonth(month)<<" "<<year<<"\n"; }void main(void){ Date myDate;//存储日期while(true){ int year;//临时存储年份int month;//临时存储月份int day;//临时存储天数cout<<"请按YYYY格式输入年:";cin>>year;cout<<"请按mm格式输入月:";cin>>month;cout<<"请按dd格式输入日:";cin>>day;if(myDate.setDate(month,day,year))break;elsecout<<"日期输入错误,请重新输入!"<<endl;}cout<<"您输入的日期是:\n";myDate.display();}8-2、设计一个人口类Population,存储某年的人数、出生的人数和死亡人数,其函数成员能返回出生率和死亡率。

#include <iostream>using namespace std;//类定义//class Population{ int pnum; //存储某年的人数int birthnum;//存储出生的人数int deadnum;//存储死亡的人数public:bool setData(const int,const int,const int);float birthrate(){return birthnum/float(pnum);}float deadrate(){return deadnum/float(pnum);}int getpnum(){return pnum;}int getbirthnum(){return birthnum;}int getdeadnum(){return deadnum;}};//返回值:如果成功赋值则返回true,否则返回false//bool Population::setData(const int p,const int b,const int d){ if(b>p||b<0) return false;if(d>p||d<0) return false;pnum=p;birthnum=b;deadnum=d;return true;}void main(void){ Population people;int pn,bn,dn;while(true){cout<<"请输入总人数:";cin>>pn;cout<<"请输入出生的人数:";cin>>bn;cout<<"请输入死亡的人数:";cin>>dn;if(people.setData(pn,bn,dn))break;elsecout<<"输入错误,请重新输入!"<<endl;}cout<<"出生率是: "<<people.birthrate()<<endl;cout<<"死亡率是: "<<people.deadrate()<<endl;}8-3、设计一个类,具有一个float指针成员,且函数成员如下:1)构造函数具有一个整型参数count,为指针成员分配count个元素空间;2)析构函数释放该空间;3)向指针指向的空间存储数据的函数;4)返回空间中这些数的平均值的函数。

#include <iostream>#include <cstdlib>using namespace std;class DataArray{ int length; //存储数组元素个数float *fltData;//存储数据public:DataArray(int =1); //构造函数~DataArray();//析构函数bool setData(const float,const int); //设置成员变量float getAverage(void); //计算并返回平均值};//构造函数////count:希望创建的动态数组元素个数。

// DataArray::DataArray(int count){ cout<<"调用构造函数..."<<endl;if(count>0){ length=count;fltData=new float[length];}else{ length=1;fltData=new float[length];}for(int i=0;i<length;i++)fltData[i]=0;}//析构函数//DataArray::~DataArray(){ cout<<"调用析构函数..."<<endl;delete [] fltData;length=0;}//设置成员变量////tData:要赋给指定变量的值。

////subscript:指定要赋值的变量数组元素为第几个。

////返回值:如果成功赋值则返回true,否则返回false。

// bool DataArray::setData(const float tData,const int subscript) { if(subscript+1>length)return false;elsefltData[subscript]=tData;return true;}//计算并返回平均值////返回值:返回数组所存储的数据的平均值。

//float DataArray::getAverage(void){ float sum=0;for(int i=0;i<length;i++)sum+=fltData[i];return(sum/length);}void main(void){ //对DataArray类进行测试cout<<"创建DataArray对象并初始化..."<<endl;DataArray Obj(3);cout<<"给DataArray对象赋值:"<<endl;for(int i=0;i<3;i++){ // 产生一个随机数float temp=(float)rand()/10;Obj.setData(temp,i);cout<<"第"<<(i+1)<<"个值为:"<<temp<<endl;}cout<<"平均值为:"<<Obj.getAverage()<<endl;}8-4、设计一个薪水类Payroll,数据成员包括单位小时工资、已经工作的小时数、本周应付工资数。