直接套板子,再补上这个判断代码即可:
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 阅读



