简化优化程序
从键盘输入一个日期,格式为yyyy-M-d
要求计算该日期与1949年10月1日距离多少天
例如:
用户输入了:1949-10-2
程序输出:1
用户输入了:1949-11-1
程序输出:31
帮忙优化简化一下程序,这个程序觉得有点繁琐了
#include <stdio.h>
main()
{
int year,month,day,sum=0;
printf("please input year,month and day\n");
scanf("%d-%d-%d",&year,&month,&day);
int days[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int flag=(year%4==0&&year%100!=0)||year%400==0?1:0;
if(year>1949)
{
sum+=day;
for(int i=0;i<month;i++)
{
sum+=days[flag][i];
}
for( i=1949;i<year;i++)
{
if((year%4==0&&year%100!=0)||year%400==0)
{
sum+=1;
}
}
sum=sum+30+30+31;
sum=sum+(year-1950)*365;
}
if(year==1949)
{
if(month>10)
{
sum+=day;
for(int i=10;i<month;i++)
{
sum+=days[flag][i];
}
}
else
{
if(month<10)
{
sum+=days[flag][month]-day;
for(int i=month+1;i<10;i++)
{
sum+=days[flag][i];
}
}
else
{
sum=sum+day-1;
}
}
}
if(year<1949)
{
sum+=days[flag][month]-day;
for(int i=month+1;i<13;i++)
{
sum+=days[flag][i];
}
for(i=0;i<10;i++)
{
sum+=days[flag][i];
}
for(i=year+1;i<1949;i++)
{
if((year%4==0&&year%100!=0)||year%400==0)
{
sum+=366;
}
else
{
sum+=365;
}
}
}
printf("%d\n",sum);
}