从键盘输入一个字符串(字符串长度不超过80且非空),按由长到短、从左到右的顺序输出该字符串的所有子串,一个子串占一行
时间: 2024-09-24 08:26:04 浏览: 45
当你需要从键盘输入一个字符串并按照指定规则输出所有子串时,可以编写如下的程序来实现。这里我将以Python为例,因为它的简洁性和易读性适合演示这个过程:
```python
def print_substrings(input_string):
# 检查输入是否为空或长度超过80
if not input_string or len(input_string) > 80:
print("输入字符串无效,请输入一个长度不超过80且非空的字符串.")
return
# 遍历字符串的所有子串,从最长到最短
for length in range(len(input_string), 0, -1): # 从len到0递减
for i in range(len(input_string) - length + 1): # 生成子串起始位置
substring = input_string[i:i+length] # 提取子串
print(substring)
# 获取用户输入
input_str = input("请输入一个字符串(不超过80字符): ")
print_substrings(input_str)
```
当你运行这个程序并输入一个符合条件的字符串后,它会打印出字符串的所有子串,每个子串占据一行,按照从长到短、从左到右的顺序排列。
相关问题
用c语言写一个代码从键盘输入一个字符串(字符串长度不超过80旦非空),按由长到短、从左到右的顺序输出该字符串的所有子串,一个子串占一行。
在 C 语言中,我们可以使用嵌套循环来实现这个功能。这里是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 80
void print_substrings(char str[]) {
int length = strlen(str);
for (int i = 0; i < length; i++) {
for (int j = i + 1; j <= length; j++) {
printf("%.*s\n", j - i, &str[i]);
}
}
}
int main() {
char input[MAX_LENGTH];
printf("请输入一个不超过80个字符的非空字符串: ");
fgets(input, sizeof(input), stdin); // 注意 fgets 可能会多读取一个换行符,需要额外处理
input[strcspn(input, "\n")] = '\0'; // 移除换行符
if (!input[0]) {
printf("输入错误,字符串不能为空。\n");
return 1;
}
print_substrings(input);
return 0;
}
```
这段代码首先定义了一个 `print_substrings` 函数,它接受一个字符串作为输入,并通过两个嵌套的 `for` 循环遍历所有可能的子串。然后在 `main` 函数中获取用户输入的字符串,移除换行符并检查是否为空。如果输入有效,就调用 `print_substrings` 函数。
注意:由于 `fgets` 会在输入字符串末尾自动添加一个换行符(`\n`),所以在打印子串之前需要将其去除。
阅读全文