编写一个程序,输入两个字符串 s1 和 s2 ,判断 s2 是否是 s1 的子串,如果是,则输出 s2 在 s1 中的起始位置。否则输出 0 输入:两个字符串 s1 和 s2 输出:s2 在 s1 中的起始位置 或者 输出 0
时间: 2024-02-25 15:56:29 浏览: 163
好的,以下是C语言编写的程序:
```
#include <stdio.h>
#include <string.h>
int findSubstring(char *s1, char *s2);
int main() {
char s1[100], s2[100];
int pos;
printf("请输入字符串s1:");
scanf("%s", s1);
printf("请输入字符串s2:");
scanf("%s", s2);
pos = findSubstring(s1, s2);
if (pos != -1) {
printf("s2在s1中的起始位置为:%d\n", pos);
} else {
printf("0\n");
}
return 0;
}
int findSubstring(char *s1, char *s2) {
int i, j, k;
for (i = 0; s1[i] != '\0'; i++) {
k = i;
j = 0;
while (s1[k] == s2[j] && s2[j] != '\0') {
k++;
j++;
}
if (s2[j] == '\0') {
return i;
}
}
return -1;
}
```
程序的运行流程如下:
1. 首先,程序要求用户输入两个字符串s1和s2。
2. 然后,程序调用findSubstring函数判断s2是否是s1的子串。具体操作是:使用三个变量i、j、k分别表示s1、s2的遍历位置,从s1的开头开始遍历,当s1[i]等于s2[0]时,从i位置开始比较s1和s2的字符是否相等,如果相等则继续比较下一个字符,直到s2中的所有字符都匹配成功或者s1中的字符不再匹配。如果s2中的所有字符都匹配成功,则说明s2是s1的子串,返回i作为s2在s1中的起始位置,否则继续遍历s1。
3. 最后,程序输出s2在s1中的起始位置或者0。
希望可以帮助到你!
阅读全文