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

C语言实现大于10的数字也对齐的数字金字塔,避免大量IF语句

解决方法

核心逻辑是利用C语言标准库printf的固定宽度格式化输出特性,让所有数字占用相同的显示宽度,无需额外分支判断即可实现对齐。

修改点说明

  • 输出数字时替换为固定宽度占位符:需要支持最大两位数字就用%2d,每个数字固定占2个字符位,不足位数自动补空格,1位、2位数字占位长度完全一致
  • 每一行的缩进削减步长和数字宽度保持一致,保证金字塔整体居中效果

完整修改后代码

#include <stdio.h>

int strlen(char *str);

int main(int argc, char **args){
    char spaces[] = {"|                              "};
    int i = 1, line = 1; // line为当前行输出的数字个数

    while(spaces[strlen(spaces)-1] != '|'){
        printf("%s", spaces);
        for(int k = 0; k < line; k++){
            printf("%2d", i); // 固定占2位,适配最大99的数字
            i++;
        }
        printf("\n");
        // 每次削减2个空格,和数字宽度对应
        spaces[strlen(spaces)-2] = '\0';        
        line += 2;
    }
}

int strlen(char *str){
    int i = 0;
    while(*(str + i))
        i++;
    return i;
}

拓展说明

如果后续需要输出更大的数字(比如最大到三位数),仅需要同步修改两个参数即可,不需要增加任何if判断:

  • 将%2d修改为%3d
  • 将spaces[strlen(spaces)-2] = '\0'中的2修改为3

内容的提问来源于stack exchange,提问作者Fuffi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:02