输入一个天数和年,求月和日(有平年和闰年)
Posted py_taotao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入一个天数和年,求月和日(有平年和闰年)相关的知识,希望对你有一定的参考价值。
今天是一个C语言代码
题目:输入一个天数和年,求月和日(有平年和闰年)
先上代码
我这里是用了最简单的一种(好吧,其实是大佬写的我看的迷迷糊糊的,决定自己用复杂又简单一点开始,之后在改变程序变简洁)
#include "stdio.h"
main()
int y,a,b,days,m;
printf("请输入年:\\n"); //y
scanf("%d",&y);
printf("请输入天数:\\n"); //days
scanf("%d",&days);
if(y%400==0 || (y%4==0&&y%100!=0)) //这里是判断是不是闰年 平年
a=1; //是闰年a就等于1
else
a=0; //否平年a等于0
if(days<=31)
m=1;
b=days;
printf("%d年%d月%d日",y,m,b);
else if(days<=(59+a) && days>31)
m=2;
b=days-31;
printf("%d年%d月%d日",y,m,b);
else if(days<=(90+a) && days>(59+a))
m=3;
b=days-(59+a);
printf("%d年%d月%d日",y,m,b);
//看到这里有先小伙伴可能已经懂了,没错我就是把每个月都给求出了,在后面的输出
//以2月说明 平年28天,闰年29天所以(1月+2月)=59天和60天
//这个时候前面判断(平润年)a的用处出来了
//先以平年计算在平年的基础上+a就是闰年了
//1月 days <= 31
//2月 31 < days <= (31+28+a) 小于1月和2月的总和a会和前面的判断有关平润不一样的
//3月 (31+28+a) < days <= (31+31+28+a) 之后就一样的思路了
else if(days<=(120+a) && days>(90+a))
m=4;
b=days-(90+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(151+a) && days>(120+a))
m=5;
b=days-(120+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(181+a) && days>(151+a))
m=6;
b=days-(151+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(212+a) && days>(151+a))
m=7;
b=days-(151+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(243+a) && days>(121+a))
m=8;
b=days-(121+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(273+a) && days>(243+a))
m=9;
b=days-(243+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(304+a) && days>(273+a))
m=10;
b=days-(273+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(334+a) && days>(304+a))
m=11;
b=days-(304+a);
printf("%d年%d月%d日",y,m,b);
else if(days<=(365+a) && days>(334+a))
m=12;
b=days-(334+a);
printf("%d年%d月%d日",y,m,b);
拜拜
以上是关于输入一个天数和年,求月和日(有平年和闰年)的主要内容,如果未能解决你的问题,请参考以下文章