我是C++和編程的超級新手,我需要一些幫助。我不明白爲什麼當電腦猜到我的號碼時它會無限循環。目前我已經在最後放置了一個休息功能。任何意見,將不勝感激。無限循環與do函數
// Computer guesses number
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand(static_cast<unsigned int>(time(0))); // Generates random number
int myNumber; // My number.
int computersNumber = 0;
int tries = 0;
int highest = 100; // Highest number the computer has put.
int lowest = 1; // Lowest number the computer has put.
cout << "\tHello, in this game the computer will try to find your number.\n\n";
cout << "Please insert your number (1 - 100): ";
cin >> myNumber; // My number, that the computer is going to guess.
while (myNumber <= 0 || myNumber >= 101) // Checks if user has inputed a legal number.
{
cout << "You entered an illegal number. Please type a new one.\n";
cin >> myNumber; // If user made an illegal choice it asks to input a new one.
}
do
{
int computersNumber = rand() % (highest - lowest) + lowest;
++tries; // adds +1 every time computer guesses wrong number.
if (myNumber > computersNumber)
{
cout << "The computer guessed: " << computersNumber << "\n";
lowest = computersNumber + 1;
}
else if (myNumber < computersNumber)
{
cout << "The computer guessed: " << computersNumber << "\n";
highest = computersNumber - 1;
}
else
{
cout << "Computer guessed your number in " << tries << " tries.\n";
break; // infinite loop if this wasn't here.
}
} while (myNumber != computersNumber);
return 0;
}
當你用調試器遍歷該循環時會發生什麼? – MrEricSir
Off topic:'//生成隨機數字'種子隨機數發生器,實際上。 – user4581301
不知道這個賦值是否很重要,但是如果用戶輸入的值不能轉換爲整數,你也會得到一個無限循環。例如:請插入您的電話號碼(1 - 100):FOO! 'cin'將被置於錯誤狀態,並拒絕進一步讀取輸入,直到錯誤被清除,並且由於它永遠不會被清除,所以要求輸入的循環永遠不會接收新的輸入並永遠旋轉。 – user4581301