如何声明,我该如何补救?

问题描述:

我想创建一个简单的'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; 
} 
+0

1.这些'如果'不做他们认为他们做的事。 2.检查一个数是否可​​以被5整除的方法是将除法的余数除以5,即'数字%5 == 0' – dasblinkenlight

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