2017-08-03 47 views
-8

我想看看我能不能做一个fizzbuzz C++ switch语句。我收到一个错误,说我在const表达式中不可用。这是否意味着我不能让这件事情起作用?还是有解决办法?这是我的代码。C++ fizzbuzz切换语句?

#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; 
     } 
    } 
} 
+9

看起来像你需要重温'switch'的工作方式:http://en.cppreference.com/w/cpp/language/switch – NathanOliver

+3

你不能这样使用'switch' /'case'。使用'if','else if'代替。 – user0042

+8

我认为你需要先阅读一本好的C++书。此代码中有很多错误 – UnholySheep

回答

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

那么,'default'的情况下,应该是'cout << i << endl;',就像在问题中一样。 –

+0

@AlgirdasPreidžius:谢谢 - 修正。 –

+0

谢谢你,我得到了你所做的错误。有趣的是它的工作原理,我很感激它。 –

0

有与您如何使用开关/箱几个基本问​​题。

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

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

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

0

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

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

你应该看/阅读如何到C++编写代码,因为它是非常重要的一些简单的教程,你了解这些基本知识。

+0

我知道如何使用if else语句,只是试图创造性 –

+0

@DanielArchuleta使用最适合你想要做的事情。如果您正在“尝试”使用它,则交换机不具有创造性。 –

+0

所有我想看到的是,如果有可能使用switch语句,为了好玩,你知道,我没有用它做任何事情。 –