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

C语言反向三角形图案绘制问题:输出不符预期求修正

修正代码实现反向数字三角形图案

预期输出

567898765
 4567654
  34543
   232
    1

当前错误输出

567898765
 45678987654
  3456789876543
   234567898765432
    12345678987654321

问题分析

你的代码核心问题在于数字递增循环(b的循环)固定写到9,递减循环(c的循环)固定从8开始,导致每一行都会完整输出从a到9再到a的序列。实际上每一行的数字范围应该随a缩小:

  • a=5时,数字从5到9再回到5(符合预期)
  • a=4时,数字应从4到7再回到4,而非到9
  • 以此类推,每一行的最大数字应为2*a -1

修正后的代码

#include <stdio.h>

int main() {
  int a, b, c, s;
  for (a = 5; a >= 1; a--) {
    // 打印前置空格
    for (s = a; s <= 4; s++) {
      printf(" ");
    }
    // 计算当前行的最大数字
    int max_num = 2 * a - 1;
    // 递增序列:从a到max_num
    for (b = a; b <= max_num; b++) {
      printf("%d", b);
    }
    // 递减序列:从max_num-1到a
    for (c = max_num - 1; c >= a; c--) {
      printf("%d", c);
    }
    printf("\n");
  }
  return 0;
}

代码解释

  1. 前置空格:保留原逻辑,通过s循环控制每一行的前置空格数量,实现右对齐效果
  2. 最大数字计算:新增max_num变量,用2*a -1计算当前行的峰值数字,确保序列范围随a动态缩小
  3. 递增序列:从a开始打印到max_num,完成上升段的数字输出
  4. 递减序列:从max_num-1开始递减打印到a,和上升段衔接形成对称结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:32:45