如何不修改for循环实现FizzBuzz从100到0反向输出
解决方案
要在不修改给定for循环的前提下实现从100到0的FizzBuzz输出,我们可以通过新增变量反转遍历顺序,同时修正原代码的逻辑错误,具体实现如下:
修正后的完整代码
#include <stdlib.h> #include <stdio.h> int main () { int idx; int num; // 新增变量,存储反转后的数字 for (idx=0; idx<=100; idx++) // Do not alter this line { num = 100 - idx; // 反转数字:idx从0到100时,num从100到0 // 修正判断顺序:先判断同时被3和5整除的情况 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 = 100 - idx,将原循环的0→100转换为100→0的输出顺序,完全符合要求且不修改原循环结构。 - 修正逻辑错误:原代码中先判断被3整除的情况,会导致同时被3和5整除的数(如15、30等)被错误输出为"Fizz"而非"FizzBuzz",调整判断顺序后,优先捕获同时满足两个条件的情况,保证逻辑正确性。
内容的提问来源于stack exchange,提问作者Ng Leng Poh
相关产品推荐
相关产品推荐

