每日一算-日期计算codeup1928

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.进位后,原来的位置要初始化!

慢慢走就很快,亦要努力,亦要上岸~ 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值