计算日期差
【问题描述】
结构
struct Date {
int year;
int month;
int day;
};
利用该结构编写一个程序用来计算两个日期之间相差的天数。
【输入形式】
输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。
【输出形式】
第二个日期与第一个日期间相差的天数。
【输入样例】
2003 3 25 2003 3 29 |
【输出样例】
4 |
分析题目我们可以知道:我们可以分别算出 2003年3月25日 和 2003年3月29日 距离 2003年1月1日 的天数 最后相减得出所求天数。
总之就是,分别计算出两个日期举例第一个日期的1月1日(因为第一个日期小)最后相减即可
#include<stdio.h>
int main ()
{
struct Date{
int year;int month;int day;
}x,y;
int i;
scanf("%d%d%d%d%d%d",&x.year,&x.month,&x.day,&y.year,&y.month,&y.day);
int c=0,f=0;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(i=1;i<x.month;i++)
{
if((x.year%4==0&&x.year%100!=0&&i==2)||(x.year%400==0&&i==2))c=c+29;
else c=c+a[i];
}
c=c+x.day;//算出第一个日期距离第一个日期那一年的第一月一日的天数
for(i=x.year;i<y.year;i++)
{
if(i%400==0)f=f+366;
else f=f+365;
}
for(i=1;i<y.month;i++)
{
if((y.year%4==0&&y.year%100!=0&&i==2)||(y.year%400==0&&i==2))f=f+29;
else f=f+a[i];
}
f=f+y.day;//算出第二个日期距离第一个日期那一年的第一月一日的天数
printf("%d",f-c);//相减得出相差的天数
}
欢迎指正。