介绍
输入一个日期,输出当前日期是这一年的第几天
注意考虑平年闰年问题
2021.3.24
输出:2021年3月24日是2021年的第83天
代码如下(部分注释)
#include <stdio.h>
int main(int argc, const char *argv[])
{
int year = 0;
int month = 0;
int month2 = 0;
int day = 0;
//int temp = 0;
printf("请输入年月日(用回车分割):\n");
scanf("%d%d%d",&year,&month,&day);
printf("您输入的日期是:%d年 %d月 %d日\n ",year,month,day);
//判断年月日的合法性
if(year <0 ||month >12 ||month < 1)
{
printf("xia TM xie\n");
return 0;
}
//判断是不是31天的合法性
if(month == 1 ||month == 3||month == 5||month == 7||month ==8||month==10||month==12)
{
if(day > 31)
{
printf("又特么瞎写!!!\n");
return 0;
}
}
if(month == 2||month==4||month==6||month==9||month==11)
{
if(day > 30)
{
printf("又特么瞎写!!!\n");
return 0;
}
}
//根据输入的年份,判断一下是不是闰年
if(((year%4==0)&&(year%100!=0))||year%400==0)
{//闰年 2yue 29day
if(month == 2)
{
if(day > 29)
{
printf("又特么瞎写!!!\n");
return 0;
}
}
month2 = 29;
}
else
{//平年 2yue 28day
month2 = 28;
if(month == 2)
{
if(day > 28)
{
printf("又特么瞎写!!!\n");
return 0;
}
}
}
switch(month){
case 12 :
printf("第%d天\n",31+month2+31+30+31+30+31+31+30+31+30+day);
break;
case 11 :
printf("第%d天\n",31+month2+31+30+31+30+31+31+30+31+day);
break;
case 10 :
printf("第%d天\n",31+month2+31+30+31+30+31+31+30+day);
break;
case 9 :
printf("第%d天\n",31+month2+31+30+31+30+31+31+day);
break;
case 8 :
printf("第%d天\n",31+month2+31+30+31+30+31+day);
break;
case 7 :
printf("第%d天\n",31+month2+31+30+31+30+day);
break;
case 6 :
printf("第%d天\n",31+month2+31+30+31+day);
break;
case 5 :
printf("第%d天\n",31+month2+31+30+day);
break;
case 4 :
printf("第%d天\n",month2+31+31+day);
break;
case 3 :
printf("第%d天\n",month2+31+day);
break;
case 2 :
printf("第%d天\n",31+day);
break;
case 1 :
printf("第%d天\n",day);
break;
}
return 0;
}