日期问题
#include
#include
#include
#include
using namespace std;
int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
bool check(int y, int m, int d) {//判断日期是否合法
if (m == 0 || m > 12) return false;
if (d == 0)return false;
if (m != 2 && d > days[m]) return false;
if (m == 2) {
int lerp = y % 100 != 0 && y % 4 == 0 || y % 400 == 0;//闰年lerp=1,平年0
if (d > 28 + lerp) return false;
}
return true;
}
int main() {
int a, b, c;
scanf_s("%d/%d/%d", &a, &b, &c);
for (int i = 19600101; i <= 20591231; i++) {//枚举1960.01.01-2059.12.31所有日期
int y = i / 10000 ;
int m = i / 1000000 % 100;
int d = i % 100;
if (check(y, m, d)) {//判断日期是否合法
if (((y % 100) == a && m == b && d == c) || (d == a && m == b && (y % 100) == c) || (m == a && d == b &&(y % 100)== c))
{
printf("%d-%02d-%02d\n", y, m, d);
}
}
}
return 0;
}
不知道错哪里了,没有输出
修改后的
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
bool check(int y, int m, int d) {//判断日期是否合法
if (m == 0 || m > 12) return false;
if (d == 0) return false;
if (m != 2 && d > days[m]) return false;
if (m == 2) {
int lerp = y % 100 != 0 && y % 4 == 0 || y % 400 == 0;//闰年lerp=1,平年0
if (d > 28 + lerp) return false;
}
return true;
}
int main() {
int a, b, c;
scanf_s("%d/%d/%d", &a, &b, &c);
for (int i = 19600101; i <= 20591231; i++) {//枚举1960.01.01-2059.12.31所有日期
int y = i / 10000 ;
//int m = i / 1000000 % 100;
int m = i % 10000 / 100;
int d = i % 100;
if (check(y, m, d)) {//判断日期是否合法
if (((y % 100) == a && m == b && d == c) ||
(d == a && m == b && (y % 100) == c) ||
(m == a && d == b &&(y % 100)== c))
{
printf("%d-%02d-%02d\n", y, m, d);
}
}
}
return 0;
}
#include <iostream>
using namespace std;
int main(){
string str;
while(cin >> str){ //读取数据
int a = 10 * (str[0] - '0') + (str[1] - '0');
int b = 10 * (str[3] - '0') + (str[4] - '0');
int c = 10 * (str[6] - '0') + (str[7] - '0');
for (int i = 0; i <= 99; ++i) //依次考虑年份的可能性
{
int tmp = i * 100 + a;
if (tmp >= 1960 && tmp <= 2059)
{
cout<<tmp<<"-"<<b<<"-"<<c<<endl; //满足输出条件
}
tmp = i * 100 + c;
if (tmp >= 1960 && tmp <= 2059) //满足输出条件
{
if(a > 12) {
cout<<tmp<<"-"<<b<<"-"<<a<<endl;
} else {
cout<<tmp<<"-"<<a<<"-"<<b<<endl;
}
if(b > 12) {
cout<<tmp<<"-"<<a<<"-"<<b<<endl;
} else {
cout<<tmp<<"-"<<b<<"-"<<a<<endl;
}
}
}
}
return 0;
}
本章记录着我本猩猩美好的刷题日常,希望在我的解析下可以有和家凤老师一样的自信,这些题我一拿到手就会。