【问题描述】从键盘输入年月日,输出这一天是这一年中的第多少天(考虑闰年)。
【输入形式】"%d%d%d"
【输出形式】"%d\n"
【样例输入】2020 7 7
【样例输出】189
#include<stdio.h>
int main()
{
int a,b,c;
int e=0;
scanf("%d%d%d",&a,&b,&c);
if((a%4==0 && a%100!=0) || a%400==0)
{
switch(b)
{
case 1:e=c;break;
case 2:e=31+c;break;
case 3:e=60+c;break;
case 4:e=91+c;break;
case 5:e=121+c;break;
case 6:e=152+c;break;
case 7:e=182+c;break;
case 8:e=213+c;break;
case 9:e=244+c;break;
case 10:e=274+c;break;
case 11:e=305+c;break;
case 12:e=335+c;break;
}
}
else
{
switch(b)
{
case 1:e=c;break;
case 2:e=31+c;break;
case 3:e=59+c;break;
case 4:e=90+c;break;
case 5:e=120+c;break;
case 6:e=151+c;break;
case 7:e=181+c;break;
case 8:e=212+c;break;
case 9:e=243+c;break;
case 10:e=273+c;break;
case 11:e=304+c;break;
case 12:e=334+c;break;
}
}
printf("%d\n",e);
return 0;
}
如上代码行数过多,我的经验有限,只能通过switch来解决该问题。尝试过通过将月份平均为每月30天的方法去做,结果测试数据总有错误。
如有大佬有简单方法,求斧正。