鱼C论坛

 找回密码
 立即注册
查看: 2046|回复: 3

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

[复制链接]
发表于 2021-3-21 09:32:53 | 显示全部楼层 |阅读模式

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

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

x
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[12] = {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[1] ++                                                  ;
        for(i = 1 ; i < month ; i ++) d += md[i - 1]                                                                 ;
        d += day                                                                                                     ;
        return d                                                                                                     ;
}

int main()
{
        int year[2] , month[2] , day[2] , days , d , i , j , k                                                       ;
        printf("你的出生日期(如 1988-05-20):")                                                                    ;
        scanf("%d-%d-%d" , & year[0] , & month[0] , & day[0])                                                        ;
        today(& year[1] , & month[1] , & day[1])                                                                     ;
        printf("今天是你生命中的第 %d 天\n" , ds(year[1] , month[1] , day[1]) - ds(year[0] , month[0] , day[0]) + 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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-21 15:28:53 | 显示全部楼层
谢谢,我还是想知道,我的是哪里出了问题(如果可以的话)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-21 16:22:24 | 显示全部楼层
是否为闰年判断错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 03:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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