1. 程式人生 > >//輸入一個日期計算並輸出這天是今年的第幾天

//輸入一個日期計算並輸出這天是今年的第幾天

#include<iostream>
using namespace std;
bool fun1(int y);//判斷是否是瑞年
int mouth(int m);//返回各月天數
int y,m,d;       //全域性變數年-月-日
int main()//主函式
{
  bool primer;
  bool fun2();//輸入並判斷日期格式是否正確
  void sum(int m,int d);//計算並輸出這天是今年的第幾天
  primer=fun2();
  while(!primer)//while迴圈輸入
   {
       cout<<"輸入有誤請重新輸入:";
       primer=fun2();
      };
  sum(m,d);//呼叫入口
return 0;
}
//判斷是否是瑞年
bool fun1(int y)
{
  if((y%4==0)&&(y%100!=0)||(y%400==0))
     return true;
  return false;
}
//輸入並判斷日期格式是否正確
bool fun2()
{
    cout<<"請輸入日期:(格式:year-mouth-day)";
    cin>>y>>m>>d;
    if((y<0)||(m<0)||(m>12)||(d>mouth(m)))  return false;
    return true;
}
//返回各月天數
int mouth(int m)
{
 if((m==4)||(m==6)||(m==9)||(m==11)) return 30;
    if((m==2)&&(fun1(y)))               return 28;
 if((m==2)&&(!fun1(y)))              return 29;
    return 31;
}
//計算並輸出這天是今年的第幾天
void sum(int m,int d)
{  int sum=0;
     for(int i=1;i<m;i++)
         sum+=mouth(i);
     sum+=d;
   cout<<"這天是今年的第:'"<<sum<<"'天"<<endl;
}