c ++ fizzbuzz switch语句?

时间:2017-08-03 17:31:26

标签: c++ for-loop switch-statement fizzbuzz

我试图看看我是否可以创建一个fizzbuzz c ++ switch语句。我收到错误,说我在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;
        }
    }
}

3 个答案:

答案 0 :(得分:5)

如果您真的想使用开关/案例,那么您可以这样做:

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;;
}

答案 1 :(得分:0)

关于如何使用开关/外壳,存在一些基本问题。

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

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

您无法使用case的表达式。这些必须是常量整数值。例如,您可以是普通整数case 0:,也可以是普通预处理器定义case FIZZBUZZ:

答案 2 :(得分:0)

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

以下是一些注释:
1)您应使用ifelse ifelse语句代替切换。
2)在C ++中,and表示为&&而非&
3)for循环声明为for(int i = 0; i <= 100; i++)

您应该观看/阅读有关如何编写C ++代码的一些简单教程,因为了解这些基础知识非常重要。