如果语句,我该如何纠正此问题

How can I remedy this if statement?

本文关键字:何纠正 问题 语句 如果      更新时间:2023-10-16

我正在尝试创建一个简单的'fizzbuzz'程序,每次打印3个倍数时,都会在其旁边打印'fizz',并且每次打印5个倍数时,"嗡嗡声"在其旁边打印出来。 但是,在此程序中发生的是,第一个IF语句每次都是正确的,并且输出每个数字都有"嗡嗡声!"在它旁边。为什么会发生这种情况?为了正确编程,我需要意识到什么?

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 中的任何非零表达式评估为true)。

为了避免如此多的比较,您实际上可以使用%操作员。

if (i%5 == 0) {
    cout << " Buzz!" << endl;
}
else if (i%3 == 0) {
    cout << " Fizz!" << endl;
}

可以使用模量(%)轻松清洁。

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