任意读入两个字符串,存放到两个一维字符数组中,然后判断短一些的串是否为长一些串的子串。(串中任意多个连续的字符组成的子序列称为该串的子串。例如“ABC”是“ASDABCGH”的子串)
时间: 2024-04-30 19:19:21 浏览: 64
下面是一个示例代码,可以实现上述功能:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str1[MAX_LEN], str2[MAX_LEN];
int len1, len2, i, j, flag;
// 读入两个字符串
printf("请输入两个字符串,以空格分隔:\n");
scanf("%s %s", str1, str2);
// 获取两个字符串的长度
len1 = strlen(str1);
len2 = strlen(str2);
// 确定较短的字符串
if (len1 > len2) {
char tmp[MAX_LEN];
strcpy(tmp, str1);
strcpy(str1, str2);
strcpy(str2, tmp);
len1 = strlen(str1);
len2 = strlen(str2);
}
// 依次判断短字符串是否为长字符串的子串
flag = 0;
for (i = 0; i <= len2 - len1; i++) {
for (j = 0; j < len1; j++) {
if (str1[j] != str2[i+j]) {
break;
}
}
if (j == len1) {
flag = 1;
break;
}
}
// 输出结果
if (flag) {
printf("%s 是 %s 的子串。\n", str1, str2);
} else {
printf("%s 不是 %s 的子串。\n", str1, str2);
}
return 0;
}
```
代码的具体实现思路是:
1. 定义两个字符数组 `str1` 和 `str2`,用于存放两个字符串。同时定义两个变量 `len1` 和 `len2`,分别表示两个字符串的长度。
2. 读入两个字符串,并获取它们的长度。
3. 确定较短的字符串。如果 `len1` 大于 `len2`,则将两个字符串交换,以保证 `str1` 存放的是较短的字符串。
4. 依次遍历 `str2` 中的每个子串,判断其中是否包含 `str1`。如果找到了一个子串与 `str1` 相等,则说明 `str1` 是 `str2` 的子串。
5. 根据查找结果输出相应的提示信息。
阅读全文