Fizzbuzz代码优化:修改条件块分支不超3个且不丢失语义
优化Fizzbuzz代码:控制条件分支数量
核心思路是把数字到输出内容的判断逻辑拆分为独立函数,让主循环的条件分支控制在3个以内,同时保持原有功能不变。
修改后的完整代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> // 生成当前数字对应的FizzBuzz输出字符串 char* get_fizzbuzz_output(int nbr) { static char buffer[20]; buffer[0] = '\0'; if (nbr % 3 == 0) { strcat(buffer, "Fizz"); } if (nbr % 5 == 0) { strcat(buffer, "Buzz"); } if (buffer[0] == '\0') { sprintf(buffer, "%d", nbr); } return buffer; } void fizzbuzz(int number_one, int number_two) { for (int nbr = number_one; nbr <= number_two; nbr++) { printf("%s\n", get_fizzbuzz_output(nbr)); } } int main(int ac, char **av) { if (ac == 1) { return 84; } if (ac == 3) { int number_one = atoi(av[1]); int number_two = atoi(av[2]); if (number_one > number_two) { printf("Error: the second parameter must be greater than the first one.\n"); return 84; } fizzbuzz(number_one, number_two); } return 0; }
关键优化点:
- 将原
fizzbuzz函数内的多分支判断逻辑,封装到get_fizzbuzz_output独立函数中,主循环仅负责调用函数并输出,完全消除了多余分支。 - 独立函数内用三个独立的
if判断(无嵌套else if),既满足分支数不超过3的要求,又清晰实现了FizzBuzz的规则:同时被3和5整除时会自动拼接出"FizzBuzz"。 - 使用静态缓冲区存储输出字符串,避免频繁内存分配,兼顾效率与代码简洁性。
内容的提问来源于stack exchange,提问作者azerty1975
相关产品推荐
相关产品推荐

