茄子爱我 发表于 2021-3-21 09:32:53

求大哥看看哪里错了(计算出生到现在生存了多少天)

#include<stdio.h>
int main()
{
        int year,month,day,sum,date,a;
        int year_n,month_n,day_n,date_n;
        printf("请输入你的生日( 如1988-05-20):");
        scanf("%d%d%d",&year,&month,&day);
        printf("请输入今年日期(如2016-03-28):");
        scanf("%d%d%d",&year_n,&month_n,&day_n);
        switch(month)//出生那年那日是那年的第几天
        {
                case 12:date+=30;
                case 11:date+=31;
                case 10:date+=30;
                case 9:date+=31;
                case 8:date+=31;
                case 7:date+=30;
                case 6:date+=31;
                case 5:date+=30;
                case 4:date+=31;
                case 3:if((year%4==0&&year%100!=0||year%4==0))
                {
                        date+=29;
               }
               else
               {
                       date+=28;
               }
               case 2:date+=31;
               case 1:date+=day;
        }
                switch(month_n)//现在这年是今年的第几天
        {
                case 12:date_n+=30;
                case 11:date_n+=31;
                case 10:date_n+=30;
                case 9:date_n+=31;
                case 8:date_n+=31;
                case 7:date_n+=30;
                case 6:date_n+=31;
                case 5:date_n+=30;
                case 4:date_n+=31;
                case 3:if((year_n%4==0&&year_n%100!=0||year_n%4==0))
                {
                        date_n+=29;
               }
               else
               {
                       date_n+=28;
               }
               case 2:date_n+=31;
               case 1:date_n+=day_n;
        }
        if((year_n%4==0&&year_n%100!=0||year_n%4==0))
                {
                        a=366;
               }
               else
               {
                       a=365;
               }
        sum=(year_n-year)*a+date_n+a-date;
       
       
        printf("你在这个世界上生存了%d",sum);
        return 0;
}

jackz007 发表于 2021-3-21 11:28:33

本帖最后由 jackz007 于 2021-3-21 11:33 编辑

#include <stdio.h>
#include <time.h>

// 获取今天的日期
void today(int * year , int * month , int * day)
{
      time_t T                        ;
      struct tm * TM                  ;
      time(& T)                     ;
      TM = localtime(& T)             ;
      * year   = TM -> tm_year + 1900 ;
      * month= TM -> tm_mon+ 1    ;
      * day    = TM -> tm_mday      ;
}

// 获取从 1900-01-01 起,到指定日期所经历的天数
int ds(int year , int month , int day)
{
      int md = {31 , 28 , 31 , 30 , 31 , 30 , 31 ,31 ,30 , 31 , 30 , 31}                                       ;
      int d , i                                                                                                    ;
      for(d = 0 , i = 1900 ; i < year ; i ++) d += (! (i % 4) && (i % 100) || ! (i % 400)) ? 366 : 365             ;
      if(! (year % 4) && (year % 100) || ! (year % 400)) md ++                                                ;
      for(i = 1 ; i < month ; i ++) d += md                                                               ;
      d += day                                                                                                   ;
      return d                                                                                                   ;
}

int main()
{
      int year , month , day , days , d , i , j , k                                                       ;
      printf("你的出生日期(如 1988-05-20):")                                                                  ;
      scanf("%d-%d-%d" , & year , & month , & day)                                                      ;
      today(& year , & month , & day)                                                                     ;
      printf("今天是你生命中的第 %d 天\n" , ds(year , month , day) - ds(year , month , day) + 1) ;
}
      编译、运行实况
D:\00.Excise\C>g++ -o d d.c

D:\00.Excise\C>d
你的出生日期(如 1988-05-20):1988-05-20
今天是你生命中的第 11994 天

D:\00.Excise\C>

茄子爱我 发表于 2021-3-21 15:28:53

谢谢,我还是想知道,我的是哪里出了问题(如果可以的话)

Wuliq 发表于 2021-3-21 16:22:24

是否为闰年判断错误
页: [1]
查看完整版本: 求大哥看看哪里错了(计算出生到现在生存了多少天)