You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:55:20