利用结构体计算两个日期之间相差的天数
【问题描述】
结构
struct Date {
int year;
int month;
int day;
};
利用该结构编写一个程序用来计算两个日期之间相差的天数。
【输入形式】
输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。
【输出形式】
第二个日期与第一个日期间相差的天数。
【输入样例】
2003 3 25
2003 3 29
【输出样例】
4
#include<stdio.h>
#include"math.h"
#include"string.h"
struct Date
{
int year;
int month;
int day;
};
int main()
{
struct Date p1,p2;
scanf("%d%d%d",&p1.year,&p1.month,&p1.day);
scanf("%d%d%d",&p2.year,&p2.month,&p2.day);
int a[12]={ 31,28,31,30,31,30,31,31,30,31,30,31};
int cha;
//分两种情况,两个日期是同一年和不是同一年
if(p1.year!=p2.year)
{
int y;
y=p2.year-p1.year;
cha=(y)*365;
int i;
for(i=p1.year;i<p2.year;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
cha=cha+1;//闰年天数多一天
}
}
int sum1,sum2;//分别求出两个日前是当年的第几天
sum1=p1.day;sum2=p2.day;
for(i=0;i<p1.month-1;i++)
sum1+=a[i];
if(((p1.year%4==0&&p1.year%100!=0)||p1.year%400==0)&&p1.month>2)
sum1=sum1+1;
for(i=0;i<p2.month-1;i++)
sum2+=a[i];
if(((p2.year%4==0&&p2.year%100!=0)||p2.year%400==0)&&p2.month>2)
sum2=sum2+1;
cha=cha-sum1+sum2;
}
else
{
int sum1,sum2,i;
sum1=p1.day;sum2=p2.day;
for(i=0;i<p1.month-1;i++)
sum1+=a[i];
if(((p1.year%4==0&&p1.year%100!=0)||p1.year%400==0)&&p1.month>2)
sum1=sum1+1;
for(i=0;i<p2.month-1;i++)
sum2+=a[i];
if(((p2.year%4==0&&p2.year%100!=0)||p2.year%400==0)&&p2.month>2)
sum2=sum2+1;
cha=sum2-sum1;
}
printf("%d",cha);
return 0;
}
还没有评论,来说两句吧...