星系炸弹
问题描述
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
思路
定义放置炸弹时间2014-11-9以及爆炸时长,随着时间递增,如果日期数大于月份天数,天数置为1,月份数+1;如果月份数大于12,月份数置为1,年份+1;再判断是否为闰年,这会影响2月份是28还是29,如果是闰年,2月份是29,如果不是,就是28,最后输出爆炸日期。
代码
#include <stdio.h>
#include <stdio.h>
int main()
{
int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//定义非闰年每个月份天数
//定义定时时长1000天
int days = 1000;
//定义放置炸弹时间2014-11-9
int year = 2014;
int month = 11;
int day = 9;
for (int i = 0; i < days; i++)
{
day++;
//如果日期数大于月份天数,天数置为1,月份数+1
if (day > monthDays[month - 1])
{
day = 1;
month++;
//如果月份数大于12,月份数置为1,年份+1
if (month > 12)
{
month = 1;
year++;
//如果是闰年,2月份是29,如果不是,就是28
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
monthDays[1] = 29;
else
monthDays[1] = 28;
}
}
}
//输出爆炸日期
printf("Date of explosion:\n");
printf("%d-%d-%d\n", year, month, day);
getchar();
return 0;
}