2017-08-03 56 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語句,爲了好玩,你知道,我沒有用它做任何事情。 –