鱼C论坛

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

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

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

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

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

x
  1. #include <stdio.h>

  2. int main()
  3. {        int i,j;
  4.         int birth_year,now_year;
  5.         int birth_month,now_month;
  6.         int birth_day,now_day;
  7.         int count = 0;//计算总共活了多少天
  8.         int day_month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  9.        
  10.          
  11.        
  12.         printf("请输入你的生日(如1988-05-20):");
  13.         scanf("%d-%d-%d",&birth_year,&birth_month,&birth_day);
  14.         printf("请输入今天的日期(如2016-03-28):");
  15.         scanf("%d-%d-%d",&now_year,&now_month,&now_day);
  16.        
  17.         /*以生日1988-05-20今天是 2016-03-28为例,先算从1989年到2015年的所有天数
  18.           再算出生月份加一月即6月到12月的天数加上5月天数减去出生的天数,加上2016年1月1日到3月28日
  19.           的天数*/         
  20.                
  21.         for(birth_year += 1;birth_year<=now_year-1;birth_year++)
  22.         {
  23.                 if(birth_year%4 == 0&&birth_year%100 != 0 ||birth_year%400==0)
  24.                 {
  25.                         day_month[1] = 29;
  26.                         for(i=0;i<=11;i++)
  27.                         {
  28.                                 count += day_month[i];
  29.                         }
  30.                 }
  31.                 else
  32.                 {
  33.                         for(i=0;i<=11;i++)
  34.                         {
  35.                                 count += day_month[i];
  36.                         }       
  37.                 }
  38.         }
  39.         if(birth_year%4 == 0&&birth_year%100 != 0 ||birth_year%400==0)
  40.         {
  41.                 day_month[1] = 29;
  42.                 if (birth_month != 12)
  43.                 {
  44.                         for(j=birth_month;j<=12;j++)
  45.                         {
  46.                                 count += day_month[j-1];
  47.                         }
  48.                 }
  49.                 count += day_month[birth_month-1] - birth_day;
  50.         }
  51.         else
  52.         {
  53.                 if (birth_month != 12)//如果出生日期是12月就不用算
  54.                 {
  55.                         for(j=birth_month;j<=12;j++)
  56.                         {
  57.                                 count += day_month[j-1];
  58.                         }
  59.                 }
  60.                 count += day_month[birth_month-1] - birth_day;//当前月份的天数减去剩下的天数               
  61.         }
  62.        
  63.         if(now_year%4 == 0&&now_year%100 != 0 ||now_year%400==0)
  64.         {
  65.                 day_month[1] = 29;
  66.                 for(i = 1;i<=now_month;i++)
  67.                 {
  68.                         count += day_month[i-1];
  69.                 }
  70.                 count += birth_day;
  71.         }
  72.         else
  73.         {
  74.                 for(i = 1; i<= now_month;i++)
  75.                 {
  76.                         count += day_month[i-1];
  77.                 }
  78.                 count += birth_day;       
  79.         }
  80.        
  81.         printf("您一定度过了%d天,日子过得真快请好好珍惜!",count);
  82.        
  83.        
  84.         return 0;
  85. }
复制代码




计算出来的天数和实际天数始终不对,我枯了 感谢各位大佬的帮助
最佳答案
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-5-22 06:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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