C++ fizzbuzz 开关语句?

c++ fizzbuzz switch statement?

我正在尝试查看是否可以创建 fizzbuzz c++ switch 语句。我收到一条错误消息,指出 i 在 const 表达式中不可用。这是否意味着我无法让这件事发挥作用?或者有解决办法吗?这是我的代码。

#include <iostream>
using namespace std;

int main() {
    for(int = 1; 1 <= 100; i++){
        switch(true){

            case(i % 3 == 0 & i % 5 == 0):
                cout << "fizzbuzz" << endl;
                break;

            case(i % 3 == 0):
                cout << "fizz" << endl;
                break;

            case(i % 5 == 0):
                cout << "fizz" << endl;
                break;
            default:
                cout << i << endl;
        }
    }
}

如果你真的想使用 switch/case 那么你可以这样做:

switch (i % 15)
{
    case 0 : cout << "fizzbuzz\n"; break;

    case 5:
    case 10: cout << "buzz\n"; break;

    case 3:
    case 6:
    case 9:
    case 12: cout << "fizz\n"; break;

    default: cout << i << "\n"; break;;
}

您的使用方式存在一些基本问题 switch/case。

预期的使用方式是让 switch 引用变量或表达式,然后 case 部分引用常量值。

相反,您正在做的是 switch(true),这没有任何意义,即使它可以编译。它相当于 switch(1)。所以在那种情况下,只有 case 1: 会适用。

您不能使用 case 的表达式。这些必须是常数整数值。因此,例如,您可以使用普通整数 case 0:,或者通常预处理器定义 case FIZZBUZZ:.

如评论中所述,有几次,您不能总是像 if 语句那样使用 switch() 语句,并且您的代码还有其他几个问题。我不会给你正确的答案,因为我认为这对你的帮助最大。

这里有一些注意事项:
1) 您应该使用 ifelse ifelse 语句而不是开关。
2) 在 C++ 中,and 表示为 && 而不是 &
3) for 循环声明为 for(int i = 0; i <= 100; i++)

您应该 watch/read 一些关于如何编写 C++ 代码的简单教程,因为理解这些基础知识很重要。