马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么我的结果会多出来3天?
#include<stdio.h>
#include<stdbool.h>
int main()
{
int s_year,s_month,s_day,e_year,e_month,e_day;
printf("请问您老贵庚啊?(格式xxxx-xx-xx)");
scanf("%d-%d-%d",&s_year,&s_month,&s_day);
printf("今个是何年何月何日啊?(格式xxxx-xx-xx)");
scanf("%d-%d-%d",&e_year,&e_month,&e_day);
int n;
n=e_year-s_year+1;
int y[n];//判断年数
y[0]=s_year;
for(int i=1;i<n;i++)
{
y[i]=y[i-1]+1;
}
//判断出生年剩余天数
int month_day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int all_s_year_day=365;
if(s_year%4==0)
{
if(s_year%100==0&&s_year%400!=0)
{ }
else
{
month_day[2]=29;
all_s_year_day=366;
}
}
int s_year_day=0,e_year_day=0;
for(int i=0;i<s_month-1;i++)
{
s_year_day+=month_day[i];
}
s_year_day+=s_day;
s_year_day=all_s_year_day-s_year_day;
//判断今年已经过的天数
month_day[2]=28;
if(e_year%4==0)
{
if(e_year%100==0&&e_year%400!=0)
{ }
else
{
month_day[2]=29;
}
}
for(int i=0;i<e_month-1;i++)
{
e_year_day+=month_day[i];
}
e_year_day+=e_day;
//判断除去今年和出生年闰年的天数
int leap_year=0;
for(int i=0;i<e_year-s_year-1;i++)
{
if(y[i]%4==0)
{
if(y[i]%100==0&&y[i]%400!=0)
{ }
else
{
leap_year++;
}
}
}
//计算总天数
int all;
all=s_year_day+e_year_day+365*(e_year-s_year-1)+leap_year;
printf("您已经来到人间的天数:%d天",all);
return 0;
}
一个明显的错误是第31、44、51行二月份的下标应该是1: month_day[2] 改为 month_day[1]。
第62行感觉 i<e_year-s_year-1; 应该不用 -1,之前第16行是 y[0] 到 y[28]。
还有一点是你把出生当天也算1天,这就多了1天。其它可能还有些小问题,大概是关于闰年的处理,就没仔细看了。
|