#include<stdio.h>
//日期差值
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0?1:0
int dayOfmonth[13][2]={
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,31,31,31,31,30,30,31,31,30,30,31,31
};
struct Date{
int Day;
int Month;
int Year;
void nextDay()
{
Day++;
if(Day>dayOfmonth[Month][ISYEAP(Year)])
{
Day=1;
Month++;
if(Month>12)
{
Month=1;
Year++;
}
}
}
};
int buf[50001][13][32];//save the orignal days
int Abs(int x)
{
return x<0?-x:x;
}
int main()
{
Date temp;
int cnt=0;
temp.Day=1;
temp.Month=1;
temp.Year=0;
while(temp.Year!=5001)
{
buf[temp.Year][temp.Month][temp.Day]=cnt;
temp.nextDay();
cnt++;
}
int d1,m1,y1;
int d2,m2,y2;
while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF)
{
int days=buf[y1][m1][d1]-buf[2017][12][4];
days+=1;//At that time the days%7 will be1,2,3,4,5,6,7
printf("%d\n",(days%7+7)%7);
}
}
处理区间问题要预处理(计算星期几)
日期计算与处理
最新推荐文章于 2025-05-26 09:42:49 发布
本文介绍了一个C语言程序,用于计算两个日期之间的天数差,并通过一个结构体维护日期信息。程序考虑了闰年和平年的差异,实现了日期递增功能。
&spm=1001.2101.3001.5002&articleId=78762171&d=1&t=3&u=f98aab1843aa4562969038e5b075122d)
1159

被折叠的 条评论
为什么被折叠?



