#include<stdio.h>#include<string.h>intpatternMatch_BF(chars,chart)//返回子串t在串s第一次出现的位置(从1开始),若t不是s的子串返回-1{inti=1,j=1;while(i<=strlen(s)&&j<=strlen(t))//两个串都没扫描完
{请把空白处补充完整else{请把此空白处程序补充完整;}}if(j>strlen(t))return(i-strlen(t));return-1;}intmain(){charSMain[30];charSSub[20];printf("请输入主串SMain:");scanf("%c",SMain);printf("%c\n",SMain);printf("请输入主串SSub:");scanf("%c",SSub);printf("%c\n",SSub);intindex=patternMatch_BF(SMain,SSub);printf("目标串包含匹配串的起始位置:%d\n",index);
}
#include <stdio.h>
#include <string.h>
int patternMatch_BF(char *s,char *t)//返回子串t在串s第一次出现的位置(从1开始),若t不是s的子串返回-1
{
int i=1,j=1;
while (i<=strlen(s) && j<=strlen(t))//两个串都没扫描完
{
if (s[i-1] == t[j-1]) {
i++;
j++;
} else {
i++;
j=1;
}
}
if (j>strlen(t)) return (i-strlen(t));
return -1;
}
int main()
{
char SMain[30];
char SSub[20];
printf("请输入主串SMain:");
fflush(stdout);
scanf("%29s",SMain);
printf("%s\n",SMain);
printf("请输入子串SSub:");
fflush(stdout);
scanf("%19s",SSub);
printf("%s\n",SSub);
int index=patternMatch_BF(SMain,SSub);
printf("主串包含子串的起始位置:%d\n",index);
return 0;
}
供参考:
#include <stdio.h>
#include <string.h>
int patternMatch_BF(char* s,char* t)//返回子串t在串s第一次出现的位置(从1开始),若t不是s的子串返回-1
{
int i = 1, j = 1;
while (i <= strlen(s) && j <= strlen(t)) //两个串都没扫描完
{
if (s[i - 1] != t[j - 1]) {
i++; j = 1;
//请把空白处补充完整
}
else {
i++; j++;
//请把此空白处程序补充完整;
}
}
if (j > strlen(t))
return(i - strlen(t));
return -1;
}
int main()
{
char SMain[30];
char SSub[20];
printf("请输入主串SMain:");
scanf("%s", SMain); //scanf("%c", SMain);
printf("%s\n", SMain); //printf("%c\n", SMain);
printf("请输入子串SSub:");
scanf("%s", SSub); //scanf("%c", SSub);
printf("%s\n", SSub); //printf("%c\n", SSub);
int index = patternMatch_BF(SMain, SSub);
printf("目标串包含匹配串的起始位置:%d\n", index);
return 0;
}