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

如何在C语言中实现数字三角形的右对齐输出

解决C语言右对齐数字三角形的问题

没问题,我来帮你搞定这个右对齐数字三角形的需求!你的原代码问题出在没有控制数字的输出宽度——当数字从个位数变成两位数时,字符长度变了,左对齐的打印方式就会让整个三角形错位。

核心思路

要实现自动对齐,我们需要先算出这个三角形里最大数字的位数,然后让每个数字都按照这个位数右对齐打印,这样不管是个位数还是多位数,都会占据相同的宽度,自然就对齐了。

修改后的完整代码

#include <stdio.h>

int main() {
    long int k = 1;
    int i, j, n, width = 0;
    scanf("%d", &n);

    // 计算三角形中的最大数字
    long int max_num = (long int)n * (n + 1) / 2;
    // 计算最大数字的位数,确定统一打印宽度
    long int temp = max_num;
    while (temp > 0) {
        width++;
        temp /= 10;
    }

    for (i = 1; i <= n; i++) {
        for (j = 1; j <= i; j++) {
            // 用%*ld实现动态宽度的右对齐打印
            printf("%*ld ", width, k);
            k++;
        }
        printf("\n");
    }
    return 0;
}

关键代码解释

  1. 计算最大数字:n行的三角形,最后一个数字是从1加到n的和,公式是n*(n+1)/2,用long int避免大数值溢出。
  2. 确定打印宽度:通过循环把最大数字不断除以10,统计它的位数,这个位数就是我们需要的统一打印宽度。
  3. 右对齐打印:%*ld是格式化输出的实用技巧——*代表用后面的第一个参数(这里是width)作为数字的打印宽度,ld表示打印长整型数字,默认就是右对齐模式。

效果示例

当输入n=5时,输出会是这样的:

1 
    2  3 
    4  5  6 
    7  8  9 10 
   11 12 13 14 15 

完美实现了数字自动右对齐,不管后续出现三位数、四位数,整个三角形的对齐都会保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:34:36