定义一个结构体类型存放日期型数据,求两个日期之间相差多少天 50
1个回答
展开全部
#include<stdio.h>
#include<conio.h>
typedef struct date
{
int year;
int month;
int day;
}Date;
int getDay(Date date1, Date date2)
{ // 1 2 3 4 5 6 7 8 9 10 11
int mon[11]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
int i;
long temp1=date1.day, temp2=date2.day;//day
for(i=date1.month-2; i>=0; i--)
{
temp1+=mon[i];
}
for(i=date2.month-2; i>=0; i--)
{
temp2+=mon[i];
}//month
temp1+=((date1.year-1)*365)+(date1.year/4);
temp2+=((date2.year-1)*365)+(date2.year/4);//year
return temp2-temp1;
}
void main()
{
Date date1, date2;
date1.year=2010;
date1.month=5;
date1.day=20;
date2.year=2011;
date2.month=5;
date2.day=25;
printf("这两个日期之间的天数为:%d", getDay(date1, date2));
getch();
}
这里 算法很巧妙,符合我的风格
不过有很多漏洞的,比如日期的格式,还有计算两个日子之间的天数可能有负数
建议使用面向对象的思想
#include<conio.h>
typedef struct date
{
int year;
int month;
int day;
}Date;
int getDay(Date date1, Date date2)
{ // 1 2 3 4 5 6 7 8 9 10 11
int mon[11]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
int i;
long temp1=date1.day, temp2=date2.day;//day
for(i=date1.month-2; i>=0; i--)
{
temp1+=mon[i];
}
for(i=date2.month-2; i>=0; i--)
{
temp2+=mon[i];
}//month
temp1+=((date1.year-1)*365)+(date1.year/4);
temp2+=((date2.year-1)*365)+(date2.year/4);//year
return temp2-temp1;
}
void main()
{
Date date1, date2;
date1.year=2010;
date1.month=5;
date1.day=20;
date2.year=2011;
date2.month=5;
date2.day=25;
printf("这两个日期之间的天数为:%d", getDay(date1, date2));
getch();
}
这里 算法很巧妙,符合我的风格
不过有很多漏洞的,比如日期的格式,还有计算两个日子之间的天数可能有负数
建议使用面向对象的思想
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询