鱼C论坛

 找回密码
 立即注册
查看: 1591|回复: 2

[已解决]新手的每日一问

[复制链接]
发表于 2019-3-5 10:22:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{        int i,j; 
        int birth_year,now_year;
        int birth_month,now_month;
        int birth_day,now_day;
        int count = 0;//计算总共活了多少天
        int day_month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
        
         
        
        printf("请输入你的生日(如1988-05-20):");
        scanf("%d-%d-%d",&birth_year,&birth_month,&birth_day);
        printf("请输入今天的日期(如2016-03-28):"); 
        scanf("%d-%d-%d",&now_year,&now_month,&now_day); 
        
        /*以生日1988-05-20今天是 2016-03-28为例,先算从1989年到2015年的所有天数
          再算出生月份加一月即6月到12月的天数加上5月天数减去出生的天数,加上2016年1月1日到3月28日
          的天数*/         
                
        for(birth_year += 1;birth_year<=now_year-1;birth_year++)
        {
                if(birth_year%4 == 0&&birth_year%100 != 0 ||birth_year%400==0)
                {
                        day_month[1] = 29;
                        for(i=0;i<=11;i++)
                        {
                                count += day_month[i];
                        }
                }
                else
                {
                        for(i=0;i<=11;i++)
                        {
                                count += day_month[i];
                        }        
                }
        }
        if(birth_year%4 == 0&&birth_year%100 != 0 ||birth_year%400==0)
        {
                day_month[1] = 29;
                if (birth_month != 12)
                {
                        for(j=birth_month;j<=12;j++)
                        {
                                count += day_month[j-1];
                        }
                }
                count += day_month[birth_month-1] - birth_day;
        }
        else
        {
                if (birth_month != 12)//如果出生日期是12月就不用算 
                {
                        for(j=birth_month;j<=12;j++)
                        {
                                count += day_month[j-1];
                        }
                }
                count += day_month[birth_month-1] - birth_day;//当前月份的天数减去剩下的天数                
        }
        
        if(now_year%4 == 0&&now_year%100 != 0 ||now_year%400==0) 
        {
                day_month[1] = 29;
                for(i = 1;i<=now_month;i++)
                {
                        count += day_month[i-1];
                }
                count += birth_day; 
        }
        else
        {
                for(i = 1; i<= now_month;i++)
                {
                        count += day_month[i-1];
                }
                count += birth_day;        
        }
        
        printf("您一定度过了%d天,日子过得真快请好好珍惜!",count);
        
        
        return 0;
}



计算出来的天数和实际天数始终不对,我枯了 感谢各位大佬的帮助
最佳答案
2019-3-5 10:45:23
只要遇到闰年你就讲第二月永久改为29了,后面不是闰年的也按29算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-5 10:45:23 | 显示全部楼层    本楼为最佳答案   
只要遇到闰年你就讲第二月永久改为29了,后面不是闰年的也按29算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-6 23:50:33 | 显示全部楼层
BngThea 发表于 2019-3-5 10:45
只要遇到闰年你就讲第二月永久改为29了,后面不是闰年的也按29算

改了还是不行,估计自己写的太麻烦了不知道哪里出了问题。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 10:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表