我试图看看我是否可以创建一个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;
}
}
}
答案 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)您应使用if
,else if
和else
语句代替切换。
2)在C ++中,and
表示为&&
而非&
3)for
循环声明为for(int i = 0; i <= 100; i++)
您应该观看/阅读有关如何编写C ++代码的一些简单教程,因为了解这些基础知识非常重要。