C语言计算两个日期之间相差的天数和倒计时

设计思路

先判断结束年份是否是闰年

如果是闰年则比平年多一天

如果起始时间小于结束时间则直接计算天数结果

否则就将两个输入结果调换来计算

#include <stdio.h>



int main()

{

    int day,month,year;

    static int sum = 0;

    static int leap = 0;

    static int lp = 0;

    int day1,month1,year1,sum1;

    printf("\n请输入起始时间,格式为:年-月-日(2021-10-23)\n");

    scanf("%d,%d,%d",&year,&month,&day); // 格式为:2021-10-23

    printf("\n请输入结束时间,格式为:年-月-日(2021-10-23)\n");

    scanf("%d,%d,%d",&year1,&month1,&day1); // 格式为:2021-10-23





    while(year < year1) // 把年份转为天数相加

    {

        if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) //判断是否是闰年

        {

        leap = leap + 366; //是否为闰年

        }

        else{

        leap = leap + 365;

        }

    year++;
    }
    


    switch(month) // 先计算每个月份有多少天

    {

    case 1:sum=0;break;

    case 2:sum=31;break;

    case 3:sum=59;break;

    case 4:sum=90;break;

    case 5:sum=120;break;

    case 6:sum=151;break;

    case 7:sum=181;break;

    case 8:sum=212;break;

    case 9:sum=243;break;

    case 10:sum=273;break;

    case 11:sum=304;break;

    case 12:sum=334;break;

    default:printf("data error");break;

    }

    sum=sum+day; // 计算起始日期有多少天




    switch(month1) // 计算每个月份有多少天

    {

    case 1:sum1 = 0;break;

    case 2:sum1 = 31;break;

    case 3:sum1 = 59;break;

    case 4:sum1 = 90;break;

    case 5:sum1 = 120;break;

    case 6:sum1 = 151;break;

    case 7:sum1 = 181;break;
        
    case 8:sum1 = 212;break;

    case 9:sum1 = 243;break;

    case 10:sum1 = 273;break;

    case 11:sum1 = 304;break;

    case 12:sum1 = 334;break;

    default:printf("data error");break;

    }



    if(year % 400 == 0 || (year % 4 == 0 && year % 100 !=0)) {// 判断是不是闰年

        if(month1 > 2){

        lp++;

        printf("%d",lp);

        }

    }



    sum1 = sum1 + day1;

    leap = leap -sum + sum1 + lp;



    printf("两个日期之间间隔了%d天\n",leap);

    return 0;
    
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值