我试着打印下面的图案,但我只能从一面减少字母,而不是从两面
请大家帮帮我:来打印这个图案
这是我使用的代码:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Programming";
int len = strlen(str);
for (int i = 0; i < len; i++) {
for (int j = i; j<len; j++) {
printf("%c", str[j]);
}
printf("\n");
}
return 0;
}
3条答案
按热度按时间hkmswyz61#
有几个逻辑错误。
首先,外部for循环
指定了错误的迭代次数。根据循环,迭代次数等于
len
。然而,实际上迭代次数应该等于( len + 1 ) / 2
。其次是内部for循环
输出的字符最大值为
len
,而len
在内部for循环后每次都应减少。您可以编写一个单独的函数,例如
程序输出为
如果传入的字符串的长度适合
int
类型的对象,则该函数将工作。否则,您可以使用嵌套的for循环,类似于嵌套的for循环,如简而言之,你的for循环应该看起来像下面这样
tvz2xvvm2#
KISS Principle解决方案具有运行速度快和易于一次性读取的优点:
首先复制
str
,以防需要保留数据。pcww981p3#
我的解决方案与Vlad的类似,但使用了
%*.*s
,而不仅仅是%.*s