c语言pat基础题改错0820L1018

img

img


#include<stdio.h>
int main(){
    int hour,minute;
    scanf(“%d%:%d”,&hour,&minute);
    if(hour>=0&&hour<=23&&minute>=0&&minute<=59){
        if(minute==0&&hour>12){
            for(int i=0;i<hour-12;i++){
                printf("当");
            }
        }else if(minute!=0&&hour>=12){
            for(int i=0;i<=hour-12;i++){
                printf("当");
            }
        }else{
            printf("Only %d:%d. Too early to Dang.",hour,minute);
        }
    }
}

我的代码出现问题,本题希望可以得到大家的指导,谢谢你的帮助!

修改如下,改动处见注释,供参考:

#include<stdio.h>
int main()
{
    int hour,minute;
    scanf("%d:%d", &hour, &minute);
    //scanf("%d%:%d", &hour, &minute);  修改
    if(hour >= 0 && hour <= 23 && minute >=0 && minute <= 59){
        if (minute == 0 && hour > 12){
            for(int i = 0;i < hour-12; i++){
                printf("Dang"); //printf("当"); 修改
            }
        }else if(minute != 0 && hour >= 12){
            for(int i = 0;i <= hour-12; i++){
                printf("Dang"); //printf("当"); 修改
            }
        }else{
            printf("Only %02d:%02d. Too early to Dang.", hour, minute);
            //printf("Only %d:%d. Too early to Dang.", hour, minute);  修改
        }
    }
    return 0;
}

【以下回答由 GPT 生成】

这段代码存在两个问题:

  1. 没有处理当时间为12:00时不输出任何内容的情况。
  2. 当时间小于等于12:00时,没有输出"Only %d:%d. Too early to Dang."这句话。

以下是修改后的代码:

#include<stdio.h>
int main(){
    int hour,minute;
    scanf("%d:%d",&hour,&minute);
    // 判断输入的合法性
    if(hour>=0 && hour<=23 && minute>=0 && minute<=59){
        // 判断是否为12:00,如果是则直接输出
        if(hour == 12 && minute == 0){
            printf("Only 12:00. Too early to Dang.");
        }
        // 判断时间是否大于12:00
        else if(hour > 12){
            // 输出"Dang"的次数为hour-12
            for(int i=0;i<hour-12;i++){
                printf("Dang");
            }
            // 如果minute不为0,则再输出一次"Dang"
            if(minute != 0){
                printf("Dang");
            }
        }
        else{
            // 输出"Only %d:%d. Too early to Dang."
            printf("Only %d:%d. Too early to Dang.",hour,minute);
        }
    }
    return 0;
}

经过这些修改后,代码可以正确处理各种情况下的输出。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^