プログラミング問題#4:Tomorrow never knows?
4260 ワード
プログラミング問題#4:Tomorrow never knows?プレイヤーの心理状態でテスト
普段は自分のコードを発表する習慣はありませんが、今日は血の教訓ですね!!長い間見ても問題が見つからなかったので、テスト用例を使ってテストすることにしましたが、結局可能性を忘れてしまいました.それは、2014-02-29、うるう年のロジックばかり書いて、年越しのロジック、まさか...うるう日のロジックを忘れてしまったなんて...
原因をまとめると、穴があると思ったところを踏んで放さず、結局ずっと穴の中にいた...
#include
#include
#include
#include
using namespace std;
bool IsLeapYear( int year ){
bool isLeap = false;
if(year % 100 == 0 && year % 400 == 0)
isLeap = true;
if(year % 4 == 0 && year % 100 != 0)
isLeap = true;
return isLeap;
}
int main() {
int year, month, day;
scanf("%d-%d-%d", &year, &month, &day);
int month_data[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(day >= month_data[month-1]){
if( month == 12 ){
year++;
month = 1;
day = 1;
}
else if(month == 2 ){
if(IsLeapYear( year ) && day == 28)
day = 29;
else{
month++;
day = 1;
}
}
else{
month++;
day = 1;
}
}
else
day++;
printf("%d-%02d-%02d
", year, month, day);
return 0;
}
試験用例を添付して使用します://2004-02-28//1901-02-28//2000-02-28//1100-02-28//2005-12-31//2008-05-30//2005-03-03//2004-02-29