关于#日期#的问题,如何解决?

日期问题

img

#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;
}