复习题及新题训练6---第几天

  • 定位:2018第九届蓝桥杯省赛C/C++B组第一题
  • 属性:日期问题
  • 难度:入门
  • 代码:
//#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int y1,y2,m1,m2,d1,d2,ans;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void isru(int y){
	if(y%400==0||(y%4==0&&y%100!=0)){
		day[2]=29;
	}else{
		day[2]=28;
	}
} 
int main(){
	cin>>y1>>m1>>d1;
	cin>>y2>>m2>>d2;
    while(y1<=y2){
    	if(y2==y1){
    	   isru(y1);
    	   ans+=(day[m1]-d1)+1;
    	   for(int i=m1+1;i<=m2-1;i++){
    		   ans+=day[i];
    	   }
    	   ans+=d2;
    	   break;
    }else if(y2-y1==1){
    	  if(m1<2){
    	     isru(y1);
    	  }
    	  ans+=(day[m1]-d1)+1;
    	  for(int i=m1+1;i<=12;i++){
    		  ans+=day[i];
    	  }
    	  if(m2>2){
    	     isru(y2);
    	  }
    	  for(int i=1;i<=m2-1;i++){
    		 ans+=day[i];
    	  }
    	  ans+=d2;
    	  break;
    }else{
    	  isru(y1);
    	  if(day[2]==28){
    		 ans+=365;
    	  }else{
    		 ans+=366;
    	  }
    	     y1++;
         }
    }
    cout<<ans;
    return 0;
}
  • 感悟:日期的模拟,关键是相差一年时前一年是否已过二月,截止年是否超过二月,在情况范围内便考虑闰年判断。
  • 归档:已归档
  • 元魂:骷髅猛犸兽X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值