1 条题解

  • 0
    @ 2023-12-30 20:59:17
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    //定义数组days, 第n项表示n月的天数 
    int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    //判断闰年的函数 
    bool leap_year(int n){
    	return (n % 400 == 0 || (n % 4 == 0 && n % 100 != 0));
    }
    int main(){
    	int y, m, d, d2, flag = 0; 
    	scanf("%d-%d-%d", &y, &m, &d);
    	if(leap_year(y)){
    		days[2] = 29;				//闰年的二月有29天,更新days数组 
    		if(m == 2 && d == 28){
    			d2 = 29;				//d2表示答案 
    			flag = 1;
    		}
    		else if(m == 2 && d == 29){
    			m++;					//二月29日的下一天要向月份进一 
    			d2 = 1;					//将天数重新设置为1 
    			flag = 1;
    		}
    	
    	}
    	if(!flag){						//如果不是闰年二月 
    		d2 = d;
    		d2++;
    	}
    	if(m == 12 && d == 31){			//跨年 
    		y++;
    		printf("%d-1-1\n", y);
    		return 0;
    	}
    	if(d == days[m]){				//小月或大月的跨月
    		m++;
    		d2 = 1;
    	}
    	printf("%d-%02d-%02d\n", y, m, d2);//输出年月日,月和日不满两位用0补全 
    	system("pause");				//冻结屏幕 
    	return 0;						//退出程序 
    }
    
    • 1

    信息

    ID
    1183
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    递交数
    13
    已通过
    3
    上传者