您的位置:首页 > 其它

算法:输入两个日期,求之间相差了多少天

2017-08-21 11:05 316 查看
输入两个日期,求他们之间相差了多少天

首先先求出从
before year
after year
之间相差了多少天,,然后减去
before year
已经过去的天数,加上
after year
已经过去的天数。

# include "stdio.h"

isLead(int year)  //判断是否为闰年
{
// 能被4整除并且不能被100整除或者能被400整除的年份就是闰年
return (year%4 == 0 && year%100 != 0) || (year%400 == 0)
}

isMou(int year, int mou)
{
int mouth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int i, days;
if(idLead(year))
{
mouth[2] = 29;
for (i=1; i<mou; i++)
days += mouth[i];
}
else
{
for (i=1; i<mou; i++)
days += mouth[i];
}
return days;
}

int main()
{
int y1, m1, d1;
int y2, m2, d2;
int i, days = 0;
printf("请输入第一个年份(eg:2008-8-8):");
scanf("%d-%d-%d", y1, m1, d1);
printf("请输入第二个年份(eg:2008-8-8):");
scanf("%d-%d-%d", y2, m2, d2);

if (y1>y2)    // 使y2永远大于y1
{
int t;
t = y1;
y1 = y2;
y2 = t;
}
if (y1 == y2)
{
if (m1>m2)
days = (isMou(y1, m1) + d1) - (isMou(y2. m2) + d2);
else
days = (isMou(y2, m2) + d2) - (isMou(y1. m1) + d1);
}
else
{
for (i=y1; i<y2; i++) // 计算开始年份到结束年份的天数
{
if (isLead(i)) // 判断是否为闰年
days += 366;
else
days += 365;
}
//减去开始年份已经过去的天数,加上结束年份已将过去的天数
days = days - (isMou(y1, m1) + d1) + (isMou(y2. m2) + d2)
}
printf("他们之间相差 %d 天。", days);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐