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

如何用C语言for循环实现倒三角?菱形代码倒三角问题排查

解决菱形倒三角生成问题

你的代码上三角部分逻辑正确,但倒三角的星号数量计算有误,导致无法生成正确的递减序列。

问题根源

原倒三角代码中,星号数量的计算公式n - i * 2不符合需求:

  • 当输入n=4时,倒三角第一行应该输出5个星号,但原公式计算结果为4-0=4,明显错误。
  • 正确的倒三角星号数量应该从2n-3开始,每行递减2个,直到1个。

两种修正方案

方案1:修正星号数量公式

保留原循环结构,仅修改星号的循环条件,使用正确的公式2*(n-1 -i) -1(等价于2n - 2i -3):

//reverse triangle
for (i = 0; i < n - 1; i++) {
    for (j = 0; j < 1 + i; j++) {
        printf(" ");
    }
    for (k = 0; k < 2*(n-1 -i) -1; k++) { // 修正后的星号数量公式
        printf("*");
    }
    printf("\n");
}

方案2:复用上三角逻辑(更推荐)

调整倒三角的循环变量,从n-2递减到0,直接复用上三角的空格和星号计算逻辑,这样代码更一致,不易出错:

//reverse triangle
for (i = n-2; i >= 0; i--) { // 循环变量从n-2开始递减
    for (j = 0; j < n - i - 1; j++) { // 和上三角相同的空格计算方式
        printf(" ");
    }
    for (k = 0; k < 1 + i * 2; k++) { // 和上三角相同的星号计算方式
        printf("*");
    }
    printf("\n");
}

验证效果

输入n=3时,两种方案都会输出正确的菱形:

*
 ***
*****
 ***
  *

输入n=4时:

*
  ***
 *****
*******
 *****
  ***
   *

内容的提问来源于stack exchange,提问作者Kim Do Kyeong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:03:31