第8章习题:
8-1、设计Date类,输出合法日期。 #include
{ 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 \ else if(m==2)
return \ else if(m==3) return \ else if(m==4) return \ else if(m==5) return \ else if(m==6) return \ else if(m==7) return \ else if(m==8)
return \ else if(m==9)
return \ else if(m==10)
return \ else if(m==11)
return \ else
return \}
//设置成员变量//
//参数: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)
{ // 按照\的形式输出日期
cout< cout< cout< 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; else cout<<\日期输入错误,请重新输入!\ } cout<<\您输入的日期是:\\n\ myDate.display(); } 8-2、设计一个人口类Population,存储某年的人数、出生的人数和死亡人数,其函数成员能返回出生率和死亡率。 #include 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(p<0) return false; 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; else cout<<\输入错误,请重新输入!\ } cout<<\出生率是: \ cout<<\死亡率是: \} 8-3、设计一个类,具有一个float指针成员,且函数成员如下: 1)构造函数具有一个整型参数count,为指针成员分配count个元素空间; 2)析构函数释放该空间; 3)向指针指向的空间存储数据的函数; 4)返回空间中这些数的平均值的函数。 #include { int length; //存储数组元素个数 float *fltData;//存储数据 public: DataArray(int =1); //构造函数 ~DataArray();//析构函数 bool setData(const float,const int); //设置成员变量 float getAverage(void); //计算并返回平均值 }; //构造函数// //count:希望创建的动态数组元素个数。// DataArray::DataArray(int count) { cout<<\调用构造函数...\ if(count>0) { length=count; fltData=new float[length]; }else { length=1; fltData=new float[length]; } for(int i=0;i //析构函数// DataArray::~DataArray() { cout<<\调用析构函数...\ delete [] fltData; length=0; } //设置成员变量// //tData:要赋给指定变量的值。// //subscript:指定要赋值的变量数组元素为第几个。// //返回值:如果成功赋值则返回true,否则返回false。// bool DataArray::setData(const float tData,const int subscript) { if(subscript+1>length) return false; else fltData[subscript]=tData; return true; }