当我学习C++时,我有一个简单的猜测我的数字代码。正如您所看到的,它选择一个随机数,让用户猜测并记录尝试的次数。
int main(){
srand(static_cast<unsigned int>(time(0))); // seed number generator
int secretNumber = rand() % 100 + 1;
int tries = 0;
int guess;
cout << "\tWelcome to Guess my Number\n\n";
do{
cout << "Enter a guess: ";
cin >> guess;
++tries;
if (guess > secretNumber){
cout << "Too high\n";
} else if (guess < secretNumber){
cout << "Too low \n";
} else {
cout << "You got it :) in " << tries << " tries \n\n";
}
} while(guess != secretNumber);
}虽然这是正确的工作,我也希望用户只有5次尝试。我可以考虑添加另一条else if语句来确保(tries < 6)。
或
我可以在do中创建另一个while循环并确保(tries < 6)。
这里最好的方法是什么?
发布于 2019-03-11 15:27:30
您可以向do-while-loop添加条件
int main(){
srand(static_cast<unsigned int>(time(0))); // seed number generator
int secretNumber = rand() % 100 + 1;
int tries = 0;
int guess;
cout << "\tWelcome to Guess my Number\n\n";
do{
cout << "Enter a guess: ";
cin >> guess;
++tries;
if (guess > secretNumber){
cout << "Too high\n";
} else if (guess < secretNumber){
cout << "Too low \n";
} else {
cout << "You got it :) in " << tries << " tries \n\n";
}
} while((guess != secretNumber) && (tries < 6));
}发布于 2019-03-11 15:58:14
另一种选择是使用for循环,并在正确答案时中断:
int main(){
srand(static_cast<unsigned int>(time(0))); // seed number generator
int secretNumber = rand() % 100 + 1;
cout << "\tWelcome to Guess my Number\n\n";
for ( int tries = 1; tries < 6; tries++ ) {
int guess;
cout << "Enter a guess: ";
cin >> guess;
if (guess > secretNumber){
cout << "Too high\n";
} else if (guess < secretNumber){
cout << "Too low \n";
} else {
cout << "You got it :) in " << tries << " tries \n\n";
break;
}
}
}发布于 2019-03-11 15:29:27
我不确定是否有最好的方法。正如您所说的,有两种可能,要么在while中添加条件
while(guess != secretNumber && tries < 6);或者你也可以选择
else if(tries > 5)
{
cout << "You are out of tries, better luck next time ;) \n"
break;
}比起while,我更喜欢有附加条件的那个。但这只是我个人的观点。我遇到了想要做else if的程序员,并试图保持循环条件相对简单。使用更复杂的if/boolean语句,您可以提取具有适当名称的函数。在您的情况下,可以这样做
bool isEndGame(int guess, int secretNumber, int tries)
{
return (guess != secretNumber) && (tries < 6);
}
int main()
{
srand(static_cast<unsigned int>(time(0))); // seed number generator
int secretNumber = rand() % 100 + 1;
int tries = 0;
int guess;
cout << "\tWelcome to Guess my Number\n\n";
do{
cout << "Enter a guess: ";
cin >> guess;
++tries;
if (guess > secretNumber){
cout << "Too high\n";
} else if (guess < secretNumber){
cout << "Too low \n";
} else {
cout << "You got it :) in " << tries << " tries \n\n";
}
} while (isEndGame(guess, secretNumber, tries));
}在我看来,最后一个是最好的选择。你不需要考虑条件,其他程序员现在就能清楚它的含义了。
https://stackoverflow.com/questions/55096936
复制相似问题