日期加一天的函式

aFakeProgramer發表於2018-04-18
bool isLeapYear(int year)
{
	if((year%4==0 && year%100!=0)||(year%400==0))//判斷閏年
		return true;
	return false;
}


void add(int &year,int &month,int &day)
{
	day++;
	if(isLeapYear(year))//判斷閏年二月的情況
	{
		if(month == 2 && day==30)
		{
           day=1;
		   month+=1;
		}
	
	}else if(month==2 && day==29)
	{
		day=1;
		month++;
	}

	if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
	{  //大月的情況
		if(day>31)
		{   
           day-=31;
		   month+=1;
		}
		if(month>12)
		{
			year+=1;
		    month-=12;
		}		
	}
	 else if(month==4 || month==6 || month==9 || month==11 )
	{//小月的情況
		if(day>30)
		{   day-=30;
			month+=1;  
	        }		
	}	           
}


int _tmain(int argc, _TCHAR* sargv[])
{   
	int year;
    int month;
    int day;
	char answer;
 do{
    cout<<"請輸入年 月 日:"<<endl;
    cin>>year>>month>>day;
	getchar();//消化掉Enter鍵,這裡很重要。
   if((month>0 && month<=12) && (day>0 && day<=31))
   {
	cout<<"加一天後的日期:"<<endl;
    add(year,month,day);
    cout<<year<<" "<<month<<" "<<day<<endl;
   } 
   else
   {
       cout<<"輸入的日期錯誤:";
   }
    //要迴圈執行的程式碼
       cout<<"要繼續嗎(y/n):";
       answer=getchar();//消化掉Enter鍵
       getchar();//消化掉Enter鍵,不然程式執行出錯
	 
 }while(answer =='y');
   system("pause");
}


相關文章