c - 为什么这个程序在第一次 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;
}
}
解决方案
您必须删除\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;
}
推荐阅读
- git - GIT 项目的 Jenkins 签出失败,权限被拒绝致命:无法分叉
- object-lifetime - Chapel:使用 zip 和用户定义的迭代器了解托管类的生命周期
- elasticsearch - 如何使用 multi_match、boosting、通配符和过滤器加入 ElasticSearch 查询?
- c# - 根据 ComboBox 选择更改 GroupBox 的内容
- c# - ABP 实时通知系统后台作业
- pandas - Pandas update() 运行时间很长
- javascript - localStorage:我无法使用 @ngx-pwa/local-storage 删除项目
- python - SQLAlchemy 没有提交更新
- javascript - D3.js 刻度格式:显示月份变化时
- sql - RDBMS:计算并打印返回日期、返回月份和返回年份