【发布时间】:2021-06-23 19:18:01
【问题描述】:
我试图让程序允许用户输入一个数字,然后让计算机告诉用户该数字是太小、太大还是等于随机生成的数字。提示和输入工作,但第一次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;
}
}
【问题讨论】:
-
你为什么使用
goto?您可以在 do-while 循环中完成这一切。 -
@SuperStormer 谢谢。我删除了它。当我认为我的 do while 循环中的逻辑可能有问题时,我添加了它,但它并没有解决问题
-
你不会再次
scanf,所以输入总是一样的。最后一个 if 也是多余的 -
不,如果你删除了 goto,你需要重新构建循环
-
@Learning2Code4Life 将
scanf放在do { [...] } while ();的开头