问题描述
我试图让程序允许用户输入一个数字,然后让计算机告诉用户这个数字是太小、太大还是等于随机生成的数字。提示和输入正常,但是第一次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;
}
}
解决方法
您必须删除 \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;
}