gpt4 book ai didi

c++ - if (!(cin >> variableName)) 在此循环中的相关性是什么

转载 作者:行者123 更新时间:2023-11-30 02:25:56 25 4
gpt4 key购买 nike

我是一名尝试学习 C++ 的自学开发人员,我在谷歌上找到了这个练习,并为其编写了代码,尽管我的所有条件都是正确的,但它行不通,当我检查他们的答案时,我发现这行代码- if (!(cin >> guess)).老实说,我看不出相关性,我不知道为什么它让我的循环不起作用。这是我的代码:

int main(int argc, char* argv[])    
{

int nUserRandNum = 0;
int randomNumber=0;

srand (time(NULL));
randomNumber = rand() % 100 + 1;

printf("Please enter a random number between 1 - 99 \n");

scanf("%d", &nUserRandNum);


do
{
if (randomNumber < nUserRandNum)
{
printf("Try to go a little higher than \n", nUserRandNum);
}
else
{
printf("You might want to go a little lower than \n", nUserRandNum);
}
}
while (randomNumber != nUserRandNum);

printf("You got it!!!");

system("Pause");

return 0;
}

当我检查他们的答案时:

int random_number, guess;

// Initialize random seed.
srand (time(NULL));

// Generate random number between 1 and 100
random_number = rand() % 100 + 1;

cout << "Guess our number (1 to 100) ";
cin>>guess;
do
{
if (!(cin >> guess))
{
cout << "Please enter only numbers" << endl;
}
else
{
if (random_number < guess)
cout << "The secret number is lower than " << guess << endl;
else if (random_number > guess)
cout << "The secret number is higher than " << guess << endl;
}
} while (random_number != guess);
cout << "Congratulations!" << endl;

if 语句做什么 {if (!(cin >> guess)) }?还有其他原因导致我的循环不起作用吗?

最佳答案

scanfcin >> 之间的区别在这里不相关,这不是它工作的原因。

这是你拥有的:

scanf("%d", &nUserRandNum);
do
{
... print ...
}
while (randomNumber != nUserRandNum);

您的 scanf 在循环之外。因此,当满足 do...while 条件时,用户已经输入的相同数字将再次被检查。

这需要在循环体内,像这样:

do
{
scanf("%d", &nUserRandNum);
... print ...
}
while (randomNumber != nUserRandNum);

cin 读取输入而不是使用 scanf 可能是个好主意,因为它不太容易出错。 (尽管您展示的代码仍然能够做到这一点。)

检查一个数字是否被成功读取可能也是一个好主意。当用户输入随机垃圾时,您不应将其视为用户输入了数字。

但这些都不是问题的原因。

关于c++ - if (!(cin >> variableName)) 在此循环中的相关性是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43502977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com