编写函数int fun(char s1,char *s2),在字符串s1中统计字符串s2出现的次数并返回。若s2在s1中未出现,则返回0。例如:
若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:ab ,则程序输出:n=4
若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:abd,则程序输出:No find
答案: int fun(char *s1, char *s2)
{
int i, j, len1 = strlen (s1), len2 = strlen (s2), n=0;
for (i=0; i<=len1-len2; i++)
{
for (j=0; j<len2; j++)
{
if ((s1+i+j) != *(s2+j))
break;
}
if (j == len2)
{
i += j-1;
n++;
}
}
return n;
}
求每行的注释!!!!!!!!!!1
同问0
|
浏览10
|
收藏0
|
int i, j, len1 = strlen (s1), len2 = strlen (s2), n=0; //len1为s1是我长度,len2为s2的长度
for (i=0; i<=len1-len2; i++) //从s1的0号位置开始遍历
{
for (j=0; j<len2; j++) //从s2的0号位置开始一次匹配
{
if ((s1+i+j) != *(s2+j)) //如果匹配失败
break; //继续s1中的下一个字符的匹配
}
if (j == len2) //如果匹配到终点
{
i += j-1; //更新i的位置,便于下一次匹配
n++; //匹配正确次数加1
}
}
return n; //返回匹配正确的次数
}
如果我没有记错的话,这个串的撇皮算法叫BF算法,还有一种是KMP算法,更快捷。
希望采纳