为什么不在 C 中为 FIZZBUZZ 使用 while 循环?

Why not use a while loop for FIZZBUZZ in C?

只用 C 编写了大约一个月,但想知道为什么 while 循环没有更频繁地用于 FIZZBUZZ。是不干净还是其他什么原因?这是我想出的:

int main()
{
    int num=1;
    while(num<=100)
    {
        if (num%3==0 && num%5==0)
        {
            printf("FIZZBUZZ!!!\n");
        }
        else if (num%3==0)
        {
            printf("FIZZ!!!\n");
        }
        else if (num%5==0)
        {
            printf("BUZZ!!!\n");
        }
        else
        {
            printf("%d\n", num);
        }
        num++;
    }

    return 0;

}

您的循环可以整齐地折叠成 for 循环:

for(int num = 1; num <= 100; ++num)

这里有两个优点:

  • num 的作用域在循环内,而在它进入 while 之后的任何作用域之前。将变量限制在尽可能小的范围内是一个很好的经验法则,因为它可以最大限度地减少在任何给定点要考虑的变量数量。

  • 您的程序运行的范围现在总结在一个地方:您可以在 for 中看到范围(1 到 100)和步骤 (1)。这种范围非常平衡,可以在阅读循环的 body 之前快速阅读和记忆。例如,如果您现在只想检查奇数,那么阅读 for header 中的 num += 2 就会立即清楚,而不是在循环的 body.