c++ - 20 个问题游戏 - Switch 语句

标签 c++ visual-studio-2012 switch-statement

我的任务是使用 C++ 创建一个 20 个问题的游戏,用户在其中想到一个 1 到 100 之间的数字,然后计算机会猜出它。为了做到这一点,我一直在尝试学习如何使用 switch 语句,因为我觉得这对我的主要代码有帮助。但是,我似乎无法将其归结为代码中非法中断的持续错误。我曾尝试更改代码并在网上寻找答案,但我找不到任何答案。我的代码如下:

#include <iostream>

using namespace std;

int main()
    {
    int i;
    cout << "Enter an integer: ";
    cin >> i;
    switch (int i)
    {
        case i > 1 :
        {
            cout << "int greater than 1, less than 5"; endl;
            break;
        }
        case i > 5 :
        {
            cout << "int greater than 5 less than 10"; endl;
            break; 
        }
        case i > 10 :
        {
            cout << "int greater than 10"; endl;
            break; 
        }
    }
    system("PAUSE");
        return 0;

}

显示的错误是:

error C2043: illegal break  

如果有人能帮我回答为什么这些错误不断出现,我们将不胜感激!

最佳答案

你不应该将变量i重新声明为int,你可以直接传入

switch (i)

此外,这对于 switch 来说并不是一个很好的用例,因为您需要:

switch (i)
{
    case 2:
    case 3:
    case 4:
    case 5:     
    {
        cout << "int greater than 1, less than 5" << endl;
        break;
    }
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    {
        cout << "int greater than 5 less than 10" << endl;
        break; 
    }
    ///...etc
}

您真的应该只使用ifelse ifelse,例如:

if (i > 1 && i < 5)
{
    cout << "int greater than 1, less than 5" << endl;
}
else if (i >= 5 && i < 10)
{
    cout << "int greater than 5 less than 10" << endl;
}
else if (i >= 10)
{
    cout << "int greater than 10" << endl;
}
else
{
    cout << "int less than 2" << endl;
}    

还有你的cout语句不正确

cout << "int greater than 1, less than 5"; endl;

应该是

cout << "int greater than 1, less than 5" << endl;

关于c++ - 20 个问题游戏 - Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26537892/

相关文章:

c - 加号未被读取

javascript - jQuery:通过单击按钮导航到另一个页面

c++ - 使用 stdlibc++ 4.7 启用 C++11 时,出现 clang 错误,而 gcc 编译正常

c++ - 无法在 opencv 3 中读取 mp4 文件

installation - Visual Studio 2012 帮助查看器坏了,如何重新安装?

c++ - CUDA 5.5启动内核函数报错

java - 如何在 switch case 中编写多个条件以获得相同的行为?

c++ - 这个链表的实现有什么问题?

c++ - std::function 的模板参数(签名)不是其类型的一部分吗?

c++ - 具有纯抽象基类的 CRTP : call overhead