C语言入门 已知今天 明天的日期(包含平闰年)

在得知今天的日期推算明天的日期的时候,难免要遇到一下几个问题

1.平年,闰年需要区分清楚

即年份除以4没有余数,即使闰年,此时2月份有29天

2.每个月的月份不一样长,这里我就用到了最简单的方法挨个列出来,因为月份的长短在我们看来并没有多大的规律。

3.每个月跨月跨年需要如何去变化。

4.如果不小心输入了2021年2.29,其实并没有这一天,所以程序要会报错。

此为区分平年或者闰年

#include
main()
{ int nian,yue,ri,c=0;printf("输入今天的日期: ");scanf("%d %d %d",&nian,&yue,&ri);if(nian%4==0){switch(yue){case 1:if(ri!=31)ri++;else if(ri==31){yue++;ri=1;}break;case 2:if(ri<29)ri++;else if(ri==29){yue++;ri=1;}if(ri>29){c=1;printf("此年为闰月");}break;case 3:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 4:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 5:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 6:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 7:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 8:if(ri!=1)ri++;if(ri==31){yue++;ri=1;}break;case 9:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 10:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 11:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 12:if(ri!=31)ri++;if(ri==31){nian++;ri==1;yue==1;}break;} }if(nian%4!=0){switch(yue){case 1:if(ri!=31)ri++;else if(ri==31){yue++;ri=1;}	break;case 2:if(ri<28)ri++;if(ri==28){yue++;ri=1;}if(ri>28){c=1;printf("此年非闰月");}break;case 3:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 4:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 5:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 6:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 7:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 8:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 9:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 10:if(ri!=31)ri++;if(ri==31){yue++;ri=1;}break;case 11:if(ri!=30)ri++;if(ri==30){yue++;ri=1;}break;case 12:if(ri!=31)ri++;if(ri==31){nian++;ri=1;yue=1;}break;} }if(c!=1)printf("明天的日期是 %d %d %d ",nian,yue,ri);elseprintf("没有这一天");
}

 测试区:

输入2021 2 29

输入2020 2 28

 

 输入2025 12 31

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部