meteor1453 2021-10-14 12:48 采纳率: 100%
浏览 30
已结题

continue导致的无限循环

我是想用户输入的数字不是一个的时候,返回到开始重新输入数字,但是运行时发现无限循环第一个printf,scanf好像是没运行,我不清楚为什么用continue会这样,希望能得到解答

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
    int magic,guess,counter=0;
    int ret;
    srand(time(NULL));
    magic=rand()% 100+1;
    do{
        printf("Please guess a number:");
        ret=scanf("%d",&guess);
        if (ret!=1) continue;
        counter++;
        if (guess>magic)
            printf("Wrong!Too big!\n");
        else if (guess<magic)
            printf("Wrong!Too Small!\n");
        else
            printf("Right!\n");
    }while (guess!=magic && counter<10);
    printf("counter = %d\n",counter);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 关注

    当输入字母的时候,由于字母不能被%d接受,所以字母一直卡在stdin里面,造成无限输出
    尝试改为

    #include <time.h>
    #include <stdlib.h>
    #include <stdio.h>
    int main(void)
    {
        int magic, guess, counter = 0;
        int ret;
        char buffer[100];
        srand(time(NULL));
        magic = rand() % 100 + 1;
        do
        {
            printf("Please guess a number:");
            ret = scanf("%d", &guess);
            if (ret != 1)
            {
                printf("ret = %d\n", ret);
                scanf("%s", buffer);
                continue;
            }
            counter++;
            if (guess > magic)
                printf("Wrong!Too big!\n");
            else if (guess < magic)
                printf("Wrong!Too Small!\n");
            else
                printf("Right!\n");
        } while (guess != magic && counter < 10);
        printf("counter = %d\n", counter);
        return 0;
    }
    

    ,缺点是键入ctrl+z时需要输入任意字符以进入下一次读取
    有帮助望采纳~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日
  • 创建了问题 10月14日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)