首页 > 解决方案 > 为什么这个程序在第一次 scanf 之后进入无限循环?

问题描述

我试图让程序允许用户输入一个数字,然后让计算机告诉用户这个数字是太小、太大还是等于随机生成的数字。提示和输入工作,但它在第一次 scanf 后卡住了。

我认为它与 scanf 而不是条件有关,因为我添加了 printf("Testing stop point") 并且不会打印到用户的屏幕上。我究竟做错了什么?

#include <stdio.h>
#include <stdbool.h>
#include <time.h>
#include <stdlib.h>

int main()
{
        //Generate a random number
        int n = 1;
        int count = 0;
        int randomNumber;
        srand(time(NULL));

        for (int i = 1; i <= n; i++)
        {
                randomNumber = rand() % 101;
        }

        printf("Guess a number between 1 - 100: ");

        int input;
        scanf("%d\n",&input);

        printf("Testing stopping point");

        do
        {
            if (input > randomNumber)
            {
                count +=1;
                printf("Too large!Try again: ");
                getchar();
            }else if (input < randomNumber)
            {
                count += 1;
                printf("Too small!Try again: ");
                getchar();
            }
        }while (input != randomNumber);

        if(input == randomNumber)
        {
            count +=1;
            printf("Correct!\n");
            printf("You guessed %d times\n", count);
            return 0;
        }
}

标签: cstdio

解决方案


您必须删除\n中的scanf,试试这样:

#include <stdio.h>
#include <stdbool.h>
#include <time.h>
#include <stdlib.h>

int main()
{
        //Generate a random number
        
        int count = 0;
        int randomNumber;
        srand(time(NULL));
        randomNumber = (rand() % 101)+1;
        int input=-1;
      
        while (input != randomNumber)
        {
              printf("Guess a number between 1 - 100: ");
             scanf("%d",&input);
            if (input > randomNumber)
            {
                count +=1;
                printf("Too large!Try again: ");
                
            }else if (input < randomNumber)
            {
                count += 1;
                printf("Too small!Try again: ");
               
            }
         
        }
if(input == randomNumber)
        {
            count +=1;
            printf("Correct!\n");
            printf("You guessed %d times\n", count);
           
        }

       return 0; 
}

推荐阅读