用C++输入一个日期和一个整数n,计算这个日期之后的n天和之前的n天得日期,并输出. 5

编制程序,输入两个日期,计算两个日期之间的差值,即相差的天数;以及输入一个日期和一个整数n,计算这个日期之后的n天和之前的n天得日期,并输出。... 编制程序,输入两个日期,计算两个日期之间的差值,即相差的天数;以及输入一个日期和一个整数n,计算这个日期之后的n天和之前的n天得日期,并输出。 展开
 我来答
百度网友4fee5b87
2018-07-09 · TA获得超过564个赞
知道小有建树答主
回答量:104
采纳率:85%
帮助的人:19.3万
展开全部
#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("%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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式