ԅ(¯ㅂ¯ԅ)。436 2023-03-29 14:49 采纳率: 83.3%
浏览 15
已结题

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

日期问题

img

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

不知道错哪里了,没有输出

  • 写回答

3条回答 默认 最新

  • ԅ(¯ㅂ¯ԅ)。436 2023-03-30 15:22
    关注

    修改后的

    
    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 3月29日

悬赏问题

  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改