//大概可以说是突发奇想了
#include <stdio.h>
#include <string.h>
int main()
{
printf("please input the str:\n");
char str[20];
//此处是利用str来存储输入的数据
gets(str);
int num = strlen(str);
int i = 0;
//主逻辑在这儿
//其中i是负责确定字符串子串的第一个字符的位置,j负责确定字符串长度
//j是由num-1-j,首先num-1是因为num记录的是个数,而且肯定是从第一个开始,所以把第一个减掉
//num-i-1的原因是因为是i相当于是首字符的坐标,以确定首字符之后仍可排列的字符
while (i <= num)
{
for (int j = 0; j < num - 1 - i; j++)
{
for (int m = i; m <= i + j; m++)
{
printf("%c", str[m]);
}
printf("\n");
}
i++;
}
//此处的外循环是管理子字符串的数量,而内循环才是输出字符的关键
//j相当于在i的基础上的增加字符,根据j的值,k可以确定自己需要前进的位数
//如果也就是i、j同时为0,那么就只输出一位
}
num-i-1就是在计算在首字符之后仍可用的字符,j代表的就是可用字符的数量,i即为首字母地址,当m=i时,就相当于从i的位置向前选择,而j就是限度