用c++实现输入任意两个日期 计算相隔天数

#include <stdio.h>

//判断是瑞年的算法
bool isleapyear(int y){
return ((y % 4 == 0 && y % 100 != 0 )|| y % 400 == 0);
}
int sum(int y, int m, int d){
int md[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//假设从0年开始,也就是你不知道的第一天, 比如求x-y就等于求(x-0)-(y-0)
int cnt = y * 365;
//下面是求瑞年二月份多一天的算法
cnt += (y - 1) / 4 + 1;
cnt -= (y - 1) / 100 + 1;
cnt += (y - 1) / 400 + 1;
//这是求这y年开始到m月d日多少天
for (int i = 1; i < m; ++i) cnt += md[i];
if (m > 2 && isleapyear(y)) ++cnt;
cnt += d;
return cnt;
}
int Count(int y1, int m1, int d1, int y2, int m2, int d2){
return sum(y2, m2, d2) - sum(y1, m1, d1);
}

int main(){
int y1, m1, d1, y2, m2, d2;
while (scanf_s("%d%d%d%d%d%d", &y1, &m1, &d1, &y2, &m2, &d2) == 6){
printf("%d\n", Count(y1, m1, d1, y2, m2, d2));
}
return 0;
}
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值