1 条题解

  • 0
    @ 2025-6-16 21:36:44
    ```language
    ```language
    #include <cstdio>
    
    int main() {
        int n;
        int year, month, day;
        int hour, min, sec;
        const char* ampm[2] = {"am", "pm"}; // 存储上午/下午标识
        
        // 读取测试用例数量
        scanf("%d", &n);
        
        // 处理每个测试用例
        while (n--) {
            // 读取输入的日期时间
            scanf("%d/%d/%d-%d:%d:%d", &year, &month, &day, &hour, &min, &sec);
            
            // 判断是上午还是下午
            int flag_of_ampm = (hour >= 12) ? 1 : 0;
            
            // 转换为12小时制
            if (hour == 0) {
                hour = 12; // 0点转换为12点
            } else if (hour > 12) {
                hour -= 12; // 超过12点的减去12
            }
            
            // 输出转换后的格式
            printf("%02d/%02d/%04d-%02d:%02d:%02d%s\n", 
                   month, day, year, hour, min, sec, ampm[flag_of_ampm]);
        }
        
        return 0;
    }
    

    2 分析。

    注意格式控制。

    ①格式读入,scanf("%d/%d/%d-%d:%d:%d",&yy,&mm,&dd,&h,&m,&s);

    ②%04d,输出4位,若不够,则补0

    printf("%02d/%02d/%04d-%02d:%02d:%02d%s\n",mm,dd,yy,h,m,s,time[pm]);

    • 1

    信息

    ID
    2751
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者