本题需要讨论不同月份不同年份过一星期后的具体日期。正常做法是根据每一个月的具体天数,判断是否为闰年进行switch分支语句进行不同的讨论,就会显得非常麻烦,造成大量冗余代码,但 倘若把每一个月的天数存到一个固定数组中就会减少很多代码量
优化后代码如下:
#include <stdio.h>
#include<math.h>
int main()
{
int year, month, day; //
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 ,31}; //存入数组
scanf("%d%d%d", &year, &month ,&day);
if (year % 4 == 0 && year % 100 != 0 || year % 400 ==0) //判断闰年
{
days[1] = 29; //闰年的2月有29天
}
day +=7; //过一星期
if (day > days[month -1])
{
day -= days[month -1];
month ++;
if (month >12)
{
month -=12;
year ++;
}
}
printf("%d年%d月%d日\n", year ,month ,day);
return 0;
}