codeup1928 日期计算
思路:日期类计算,日期要分成12个月份,其中2月份比较特殊,需要分平年和闰年,平年二月28天,闰年二月29天,故需要一个判断闰年的函数和存储每个月份的天数的数据结构。
1.判断闰年条件:
(1)date%4==0&&date%100!=0
(2)date%400==0
2.存储天数的数据结构——二维数组days[a][b]
(1)a表示月份
(2)b表示平年和闰年a月份的天数
3.模拟时钟转动
(1)day+1,考虑月进位和年进位两种情况
代码
#include<cstdio>
int days[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}
};
int isLeap(int year){
if((year%4==0&&year%100!=0)||year%400==0)return 1;
else return 0;
}
int main(){
int date1,date2,temp;
int y1,y2,m1,m2,d1,d2;
int ans=1;
while(1){
scanf("%d%d",&date1,&date2);
if(date1>date2){
temp=date2;
date2=date1;
date1=temp;
}
y1=date1/1000;
y2=date2/1000;
m1=date1%1000/100;
m2=date2%1000/100;
d1=date1%100;
d2=date2%100;
while(y1<y2||m1<m2||d1<d2){
d1++;
if(d1==days[m1][isLeap(y1)]+1){
m1++;
d1=1;
}
if(m1==13){
y1++;
m1=1;
}
ans++;
}
printf("%d\n",ans);
ans=1;
}
return 0;
}
结果
要点
1.进位后,原来的位置要初始化!
慢慢走就很快,亦要努力,亦要上岸~