以下是一个使用C语言编写的程序,可以实现上述需求:

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

void printSubstrings(char* str) {
    int len = strlen(str);
    
    // 输出原字符串本身
    printf("%s\n", str);
    
    // 输出长度为1的子字符串
    for (int i = 0; i < len; i++) {
        printf("%c\n", str[i]);
    }
    
    // 输出长度大于1的子字符串
    for (int i = 2; i <= len; i++) {
        for (int j = 0; j <= len - i; j++) {
            for (int k = j; k < j + i; k++) {
                printf("%c", str[k]);
            }
            printf("\n");
        }
    }
}

int main() {
    char str[11];
    
    printf("请输入一个字符串(长度不超过10):");
    scanf("%s", str);
    
    printf("所有子字符串如下:\n");
    printSubstrings(str);
    
    return 0;
}

这个程序首先从控制台读入一个字符串,然后调用printSubstrings函数来输出所有子字符串。函数中,首先输出原字符串本身,然后依次输出长度为1的子字符串,再以长度递增的顺序输出长度大于1的子字符串。输出时,每个子字符串占一行。

注意,这个程序假设输入的字符串长度不会超过10个字符。如果输入的字符串长度超过10,可能会导致程序出现问题

c语言编写程序从控制台读入一个字符串长度不超过10向控制台输出其所有子字符串包括原字符串本身。向控制台输出所有子字符串每行输出一个先输出长度短的子字符串长度相同时以在原字符串中出现的先后顺序输出。

原文地址: https://www.cveoy.top/t/topic/hRMt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录