为什么不在 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.
只用 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.