亦行之 2024-03-22 21:08 采纳率: 34.5%
浏览 1

龟兔赛跑c语言无法得到正确答案

img


#include<stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    int g=0,t=0,time=0;//跑的距离
    while(time<x){
        time++;//
        g+=3;
        t+=9;
        if(time%10==0){
            if(t>g){
                time+=30;
                g+=30*3;
            }
        }
    } 
    if(g>t){
        printf("@_@ %d",g);
    }else if(g==t){
        printf("-_-");
    }else{
        printf("^_^ %d",t);
    }
    return 0;
}

我的答案是错的 请问我的逻辑哪里有问题呢

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-22 21:08
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这段代码的逻辑问题在于,每跑10秒后就会判断龟和兔子的位置,但是只有在兔子跑的距离大于龟的跑的距离时才会让兔子休息30秒,这会导致兔子和龟子在同一时刻完成比赛时,兔子跑的距离一定会大于龟子跑的距离,因为兔子会先休息30秒,而龟子则会一直跑,这个问题可以通过把判断兔子是否要休息的语句放到每一秒都判断的循环中解决。 修改后的代码:
    #include<stdio.h>
    int main(){
        int x;
        scanf("%d",&x);
        int g=0,t=0,time=0;//跑的距离
        while(time<x){
            time++;
            g+=3;
            t+=9;
            if(time%10==0){
                if(t>g){
                    time+=30;
                    g+=30*3;
                } else {
                    continue; // 兔子不休息,进入下一秒循环
                }
            }
        }
        if(g>t){
            printf("@_@ %d",g);
        } else if(g==t){
            printf("-_-");
        } else{
            printf("^_^ %d",t);
        }
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月22日