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

求助:使用C语言实现双向递减的字符图案输出

解决两边同时递减的字符图案打印问题

你的代码目前实现的是从左到右逐步截断开头的字符,要实现两边同时递减的效果,需要同时控制起始索引和结束索引,并且在每一行开头添加对应数量的空格来实现缩进。

修正后的代码

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Programming";
    int len = strlen(str);

    // 循环次数为字符串长度的一半向上取整,避免打印反向重复的行
    for (int i = 0; i < (len + 1) / 2; i++) {
        // 打印对应数量的缩进空格,实现两边收缩的视觉效果
        for (int j = 0; j < i; j++) {
            printf(" ");
        }
        // 打印从第i位到倒数第i位之间的字符
        for (int j = i; j <= len - 1 - i; j++) {
            printf("%c", str[j]);
        }
        printf("\n");
    }

    return 0;
}

代码说明

  • 外层循环次数设为(len + 1) / 2:以"Programming"(长度11)为例,会循环6次,刚好打印到中间单个字符为止,避免后续出现反向缩短的冗余行。
  • 第一个内层循环:打印i个空格,让每一行向左缩进,形成两边同时向内收缩的视觉效果。
  • 第二个内层循环:起始索引为i、结束索引为len-1-i,每一行都会同时去掉开头和结尾的i个字符,实现两边同步递减的核心逻辑。

输出效果

运行后会输出:

Programming
 rogrammin
  ogrammi
   gramm
    ram
     a

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:33:21