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 基于OPENCV的人脸识别
  • ¥20 51单片机学习中的问题
  • ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
  • ¥15 Python中knn问题
  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!