【问题标题】:c++ fizzbuzz switch statement?c++ fizzbuzz switch 语句?
【发布时间】:2018-01-11 11:02:08
【问题描述】:

我正在尝试查看是否可以制作 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;
        }
    }
}

【问题讨论】:

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


【解决方案1】:

如果你真的想使用 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;;
}

【讨论】:

  • 好吧,default 的情况应该是cout &lt;&lt; i &lt;&lt; endl;,就像问题中一样。
  • 谢谢伙计,我知道我做错了什么。它的工作原理很有趣,我很感激。
【解决方案2】:

您如何使用 switch/case 存在一些基本问题。

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 我知道如何使用 if else 语句,只是想发挥创意
    • @DanielArchuleta 使用最适合您尝试做的事情。如果您“尝试”使用某个开关,它就没有创意。
    • 我只是想看看是否可以使用 switch 语句,为了好玩,你知道,我没有用它做任何事情。
    猜你喜欢
    • 1970-01-01
    • 2014-11-19
    • 2013-09-15
    • 2021-07-24
    • 1970-01-01
    • 2010-12-20
    • 2011-11-27
    • 2012-10-01
    • 2016-10-27
    相关资源
    最近更新 更多