星系爆炸(星系爆炸拳 什么小說)
星系爆炸
c語言-星系爆炸問題
題目要求:浩瀚的星系空間里有很多人造炸彈,每個炸彈都可以設置幾天后爆炸。例如,如果阿爾法炸彈在2015年1月1日放置15天,它將在2015年1月16日爆炸。
分析:首先定義一個長度為12的一位數組,存儲一年中每個月的天數。(二月比較特殊,可以先設為28或29中的任意一天,然后根據平年和閏年判斷具體幾天)。
輸入設定的天數后,讓天數從0增加1,直到與當月天數相同。同樣,當月份達到12時,年份加1,最后,按照格式輸出。
該過程如下:
#包括
intmain()
{
intmonthdayintdays={31,28,31,30,31,30,31,31,30,31,30,31 };
[12]
年、月、日;
inti
scanf("%d-%d-%d%d ",&year,&month,& days);
for(I = 0;imonthday[month-1]){
day = 1;
month++;
如果(月份> 12){
月= 1;
year++;
if((year % 400 = = 0)| |(year % 4 = = 0 & year % 100!=0))
month day[1]= 29;
其他
month day[1]= 28;
}
}
}
printf("%d-%d-%d ",年、月、日);
return0
}
編寫程序時遇到的問題及其改進;
第一個周期,在開始寫的時候,在day++語句之后,直接判斷天數是否到月,不需要判斷閏年,輸入幾組值進行驗證,結果都是正確的。但是,有同學看了之后提出了一個問題:如果一開始輸入的月份是一月份,而年份恰好是閏年,那么程序第一次運行的時候,二月份并沒有被特殊對待,仍然被視為正常年份,這會導致日期的最終日期提前一天。
所以我加了一句判斷年復一年++的話,保證不管第一個月是在2月之前還是之后,都能得到正確的輸出結果。