返回题解分享
讨论 / 题解分享/ 帖子详情

日期问题(编程题) - 题解

直接套板子,再补上这个判断代码即可:



if( (year%100 == a && month == b && day == c) || (month == a && day == b && year%100 ==c) || (day == a && month == b && year%100 == c)){
					printf("%d-%02d-%02d\n",year,month,day);
				}


完整代码如下:



#include<bits/stdc++.h>

using namespace std;

//int months[]= {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int a,b,c;

int main() {
	
	scanf("%d/%d/%d",&a,&b,&c);
	
	for(int year = 1960; year <= 2059; year++)
		for(int month = 1; month <= 12; month++)
			for(int day =1; day <= 31; day++) {
				if(month == 1 || month == 3 || month == 5 || month == 7 ||
				        month == 8 || month == 10 || month == 12);
				else if(month == 2) {
					if((year%4 == 0 && year%100 != 0) || year % 400 == 0) {
						if(day > 29) break;
					} else {
						if(day > 28) break;
					}
				} else {
					if(day > 30) break;
				}
				
				//从这开始编写代码:
				//把题目要求得到三种情况模拟枚举出来即可 即 1. 年、月、日 or 2. 月、日、年 or 3. 日、月、年 
				//只不过题目把年份也都省略了前两位  可以通过 mod 运算取出年份的后两位:year%100
				if( (year%100 == a && month == b && day == c) || (month == a && day == b && year%100 ==c) || (day == a && month == b && year%100 == c)){
					printf("%d-%02d-%02d\n",year,month,day);
				} 
			}
	return 0;
}
0 回复 0 转发 1 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!