为什么这个程序在第一次 scanf 之后进入无限循环?

Why is this program going into an infinite loop after the first scanf?

我正在尝试让程序允许用户输入一个数字,然后让计算机告诉用户该数字是否太小、太大或等于随机生成的数字。提示和输入有效,但在第一次 scanf 后卡住。

我认为这与 scanf 而不是条件有关,因为我添加了 printf("Testing stopping 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;
        }
}

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

#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; 
}