如何声明,我该如何补救?
问题描述:
我想创建一个简单的'fizzbuzz'程序,每次打印3的倍数时,'fizz'打印在它旁边,每打印5的倍数,'buzz'打印在它旁边。 然而,在这个程序中会发生什么呢?第一个if语句每次都是正确的,输出是每个数字都有'Buzz!'。在它旁边。这是为什么发生?为了正确编程,我需要实现什么?如何声明,我该如何补救?
for(int index = 1; index <= 100; ++index) {
cout << index << endl;
if (index == 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100)
cout << " Buzz!" << endl;
else if(index == 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99)
cout << " Fizz!" << endl;
}
答
C++中的逗号运算符意味着完全不同的东西 - 它将两个表达式分开,忘记第一个表达式的结果并返回第二个表达式的值。
因此技术上的第一个语句可以缩短为:
if (100) {
...
这始终是真的(在C/C++评估为真任何非零表达)。
为了避免这么多的比较,你可以使用%
运算符。
if (i%5 == 0) {
cout << " Buzz!" << endl;
}
else if (i%3 == 0) {
cout << " Fizz!" << endl;
}
+0
非常感谢大家。我将从现在开始考虑模数,并使用您提供的信息修正此代码。 – CosmicBatz
答
这可以使用模数(%)很容易地清理。
for(int index = 1; index <= 100; ++index) {
cout << index << endl;
if (index % 5 == 0)
cout << " Buzz!" << endl;
else if(index % 3 == 0)
cout << " Fizz!" << endl;
}
1.这些'如果'不做他们认为他们做的事。 2.检查一个数是否可以被5整除的方法是将除法的余数除以5,即'数字%5 == 0' – dasblinkenlight