• C++简单年月日的功能实现


    //	C++年月日判断初步代码
    #include <iostream>
    
    
    using namespace std;
    
    
    class Data
    {
    	int year;
    	int month;
    	int day;
    public:
    	//判断日期是否有效
    	bool data_check(int _year,int _month,int _day)
    	{
    		year = _year;
    		month =  _month;
    		day = _day;
    
    
    		if(0 > year || 2018 < year) return false;
    		if(0 > month || 12 < month) return false;
    		if(0 > day || 31 < day) return false;
    		return true;
    	}
    	//判断是否是闰年
    	bool leap_year(int _year)
    	{
    		year = _year;
    		if(year%400 == 0 || (year%4 == 0 &&year%100 != 0))//能被4,400整除除去被100整除的都是闰年
    		{
    			return true;
    		}
    		else 
    		{
    			return false;
    		}
    	}
    	//下一天的日期
    	void nextday(int _year,int _month ,int _day)
    	{
    		
    		year = _year;
    		month = _month;
    		day = _day;
    		switch(month)
    		{
    			case 1:
    				if(31 == day)
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 2:
    				if((28 == day &&!leap_year(year))||(29 == day &&leap_year(year)))
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 3:
    				if(31 == day)
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 4:
    				if(30 == day)
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 5:
    				if(31 == day)
    				{
    					month++;
    					day =1;
    					break;
    				}
    			case 6:
    				if(30 == day)
    				{
    					month++;
    					day =1;
    					break;
    				}
    			case 7:
    				if(31 == day)
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 8:
    				if(31 == day)
    				{
    					month++;
    					day =1;
    					break;
    				}
    			case 9:
    				if(30 == day)
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 10:
    				if(31 == day)
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 11:
    				if(30 == day)
    				{
    					month++;
    					day = 1;
    					break;
    				}
    			case 12:
    				if(31 == day)
    				{
    					year++;
    					month = 1;
    					day = 1;
    					break;
    				}
    		}
    		cout << year << "." << month << "." << day << endl;
    	}
    	//列出下n天或者前n天的日期
    	void nextday(int _year,int _month,int _day,int n)
    	{
    		year = _year;
    		month = _month;
    		day = _day;
    		if(0 < n)
    		{
    			
    			for(n =n+1;n>0;n--)
    			{
    				switch(month)
    				{
    					case 1:
    						if(31 == day)
    						{
    							month++;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 2:
    						if((28 == day &&!leap_year(year))||(29 == day &&leap_year(year)))
    						{
    							month++;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 3:
    						if(31 == day)
    						{
    							month++;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 4:
    						if(30 == day)
    						{
    							month++;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 5:
    						if(31 == day)
    						{
    							month++;
    							day =1;
    							break;
    						}
    					case 6:
    						if(30 == day)
    						{
    							month++;
    							day =1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 7:
    						if(31 == day)
    						{
    							month++;
    							day = 1;
    							break;
    						}else day++;
    					case 8:
    						if(31 == day)
    						{
    							month++;
    							day =1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 9:
    						if(30 == day)
    						{
    							month++;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 10:
    						if(31 == day)
    						{
    							month++;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 11:
    						if(30 == day)
    						{
    							month++;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    					case 12:
    						if(31 == day)
    						{
    							year++;
    							month = 1;
    							day = 1;
    							break;
    						}else {
    							day++;
    							break;
    						}
    				}
    			cout << year << "." << month << "." << day << endl;
    			}
    		}
    		if(0 > n)
    		{
    			
    			for(n =n-1;n<0;n++)
    			{
    				switch(month)
    				{
    					case 1:
    						if(1 == day)
    						{
    							year--;							
    							month =12;
    							day = 31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 2:
    						if(1 == day)
    						{
    							month--;
    							day = 31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 3:
    						if(1 == day)
    						{
    							month--;
    							if(leap_year(year))
    							{
    								day = 29;
    							}else{
    								day = 28;
    							}
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 4:
    						if(1 == day)
    						{
    							month--;
    							day = 31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 5:
    						if(1 == day)
    						{
    							month--;
    							day =30;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 6:
    						if(1 == day)
    						{
    							month--;
    							day =31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 7:
    						if(1 == day)
    						{
    							month--;
    							day = 30;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 8:
    						if(1 == day)
    						{
    							month--;
    							day =31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 9:
    						if(1 == day)
    						{
    							month--;
    							day = 31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 10:
    						if(1 == day)
    						{
    							month--;
    							day = 30;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 11:
    						if(1 == day)
    						{
    							month--;
    							day = 31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    					case 12:
    						if(1 == day)
    						{
    							month--;
    							day = 31;
    							break;
    						}else {
    							day--;
    							break;
    						}
    				}
    			cout << year << "." << month << "." << day << endl;
    			}
    		}
    	}
    	
    
    
    };
    int main()
    {
    	Data *data = new Data;
    	int year = 1997;
    	int month = 2;
    	int day = 28;
    	int n = -137;
    	cout << data->data_check(year,month,day) << endl;
    	cout << data->leap_year(year) << endl;
    	data-> nextday(year,month,day);
    	data-> nextday(year,month,day,n);
    	
    	
    }
  • 相关阅读:
    网络流24题总结和题解
    NOIP复习之1 数学数论
    BZOJ3301 P2524 UVA11525 算法解释康托展开
    线段树与树状数组的综合运用
    P2261 bzoj1257 [CQOI2007]余数求和
    BZOJ 1968_P1403 [AHOI2005]约数研究--p2260bzoj2956-模积和∑----信息学中的数论分块
    P1064 金明的预算方案
    洛谷p1002 过河卒
    Luogu P3014 [USACO11FEB]牛线Cow Line
    Luogu P3927 SAC E#1
  • 原文地址:https://www.cnblogs.com/gzk1171848896/p/9435956.html
Copyright © 2020-2023  润新知