算法笔记--日期处理

在这里插入图片描述

#include<iostream>
using namespace std;
//求日期差值
//两个变量存储日期,先输入的日期要小于或等于后输入的日期
//如何来处理闰年闰月的日期不同的问题
//肯定要判断是否为闰年,然后就是闰年怎样处理
//每个月的天数不一样怎么处理
//其实可以用if但是比较麻烦,直接用数组比较方便
//数组的一维坐标代表月份,二维坐标用0和1表示是否是闰年
 
int month[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} };
bool isleap(int year){
	return (year%4==0&&year%100!=0||year%400==0);
}
int main(){
	int time1,y1,m1,d1;
	int time2,y2,m2,d2;
	while(scanf("%d%d",&time1,&time2)!=EOF){
		if(time1>time2){
			int temp=time1;
			time1=time2;
			time2=temp;
		}
		y1=time1/10000;
		y2=time2/10000;
		m1=time1%10000/100;
		m2=time2%10000/100;
		d1=time1%100;
		d2=time2%100;
		int ans=1;//记录天数的,因为规定相邻两天差2 
		while(y1<y2||m1<m2||d1<d2){
			d1++ ;
		//这是一个循环一直到time1=time2的时候结束
		if(d1==month[m1][isleap(y1)]+1){//这里的+1很重要,我总爱忘记
		//月份最后一天是可以有的但是32天是不存在的 
			m1++;
			d1=1;
		}
		if(m1==13){
			y1++;
			m1=1;
			
		}
		ans++; 	
	}
	printf("%d\n",ans);

} 
	return 0;}

自己的易错点的总结:这个if()后面的条件如果是判断相等的话总爱给==丢掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值