求助:使用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
相关产品推荐
相关产品推荐

