首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >猜猜我的数字c++ while循环中的循环

猜猜我的数字c++ while循环中的循环
EN

Stack Overflow用户
提问于 2019-03-11 15:24:31
回答 4查看 285关注 0票数 0

当我学习C++时,我有一个简单的猜测我的数字代码。正如您所看到的,它选择一个随机数,让用户猜测并记录尝试的次数。

代码语言:javascript
运行
复制
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)

这里最好的方法是什么?

EN

回答 4

Stack Overflow用户

发布于 2019-03-11 15:27:30

您可以向do-while-loop添加条件

代码语言:javascript
运行
复制
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));
}
票数 4
EN

Stack Overflow用户

发布于 2019-03-11 15:58:14

另一种选择是使用for循环,并在正确答案时中断:

代码语言:javascript
运行
复制
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;
    }
   }
}
票数 2
EN

Stack Overflow用户

发布于 2019-03-11 15:29:27

我不确定是否有最好的方法。正如您所说的,有两种可能,要么在while中添加条件

代码语言:javascript
运行
复制
while(guess != secretNumber && tries < 6);

或者你也可以选择

代码语言:javascript
运行
复制
else if(tries > 5)
{
    cout << "You are out of tries, better luck next time ;) \n"
    break;
}

比起while,我更喜欢有附加条件的那个。但这只是我个人的观点。我遇到了想要做else if的程序员,并试图保持循环条件相对简单。使用更复杂的if/boolean语句,您可以提取具有适当名称的函数。在您的情况下,可以这样做

代码语言:javascript
运行
复制
 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));
}

在我看来,最后一个是最好的选择。你不需要考虑条件,其他程序员现在就能清楚它的含义了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55096936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档