f0904.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:1k
源码类别:

C#编程

开发平台:

Visual C++

  1. //=====================================
  2. // f0904.cpp
  3. // partial initialization of constructor
  4. //=====================================
  5. #include<iostream>
  6. #include<iomanip>
  7. using namespace std;
  8. //-------------------------------------
  9. class Date{
  10.   int year, month, day;
  11.   void init();
  12. public:
  13.   Date(const string& s);
  14.   Date(int y=2000, int m=1, int d=1);
  15.   bool isLeapYear()const;
  16.   friend ostream& operator<<(ostream& o, const Date& d);
  17. };//-----------------------------------
  18. void Date::init(){
  19.   if(year>5000 || year<1 || month<1 || month>12 || day<1 || day>31)
  20.     exit(1);  // 停机
  21. }//------------------------------------
  22. Date::Date(const string& s){
  23.   year = atoi(s.substr(0,4).c_str());
  24.   month = atoi(s.substr(5,2).c_str());
  25.   day = atoi(s.substr(8,2).c_str());
  26.   init();
  27. }//------------------------------------
  28. Date::Date(int y, int m, int d){
  29.   year=y, month=m, day=d;
  30.   init();
  31. }//------------------------------------
  32. bool Date::isLeapYear()const{
  33.   return (year % 4==0 && year % 100 )|| year % 400==0;
  34. }//------------------------------------
  35. ostream& operator<<(ostream& o, const Date& d){
  36.   o<<setfill('0')<<setw(4)<<d.year<<'-'<<setw(2)<<d.month<<'-';
  37.   return o<<setw(2)<<d.day<<'n'<<setfill(' ');
  38. }//------------------------------------
  39. int main(){
  40.   Date c("2005-12-28");
  41.   Date d(2003,12,6);
  42.   Date e(2002);
  43.   Date f(2002,12);
  44.   Date g;
  45.   cout<<c<<d<<e<<f<<g;
  46. }//====================================
  47.