|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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天。其它可能还有些小问题,大概是关于闰年的处理,就没仔细看了。
|
-
-
|