1

我正在解决 Stroustrup 书中的一个练习,我必须设计一个程序来猜测用户正在考虑的一个 1-100 之间的数字,例如“它是否小于 50?”。等等。我不能问超过 7 个问题才能得到答案。

到目前为止,我有这样的事情:

string answer;

cout << "Think of a number between 1 and 100.\n";

cout << "Is it even or odd? (E/O)\n";

cin >> answer;

if (answer == "E") 
{
    cout << "Is it less than 50? (Y/N)\n";
    cin >> answer; 
    if (answer == "Y")
    {
        cout << "Is it less than 25? (Y/N)\n";
        cin >> answer;
        if (answer == "Y")
        {
            cout << "Is it less than 15? (Y/N)\n";
            cin >> answer;
            if (answer == "Y")
            {
                cout << "Is it less than 9? (Y/N)\n";
                cin >> answer;
                if (answer == "Y")
                {
                    cout << "Is it less than 5? (Y/N)\n";
                    cin >> answer;
                    if (answer == "Y")
                    {
                        cout << "Is it less than 3? (Y/N)\n";
                        cin >> answer;
                        if (answer == "Y") 
                        {
                            cout << "Your number is 2.";
                        }
                    }
                }
            }
        }
}
}

我觉得这真的很糟糕,因为我只有一个流程图的路径,而且这个程序已经很长了。有没有更有效的方法来做到这一点?

4

1 回答 1

1

基本上,您希望根据用户所说的内容,在您之前猜到的数字上减半或加半。如果您在循环中要求输入,您可以简单地每次添加或删除一半的数字,询问新的数字。

因此,基本上,您不必对每个问题进行硬编码,而是每次都问相同的问题,但在循环中使用最后一个数字 / 2 或 + (/2)。

我假设您并不真的希望我们为您编写代码,所以我不会。相信有了这个线索,你就可以猜到了!查看 for/while 循环,因为您需要这些循环来执行此操作。

于 2012-10-06T20:30:38.733 回答