星系爆炸(星系爆炸拳 什么小说)
星系爆炸
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月之前还是之后,都能得到正确的输出结果。