/*编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,
子字符串为:as,则应输出6。
[程序分析]
由于小串中只有2个字符所以可用str[i]==sbustr[0]&&str[i+1]==substr[1]来判断小串是否与长串当前位置(str[i])相同(即出现一次)。
因而只要让长串当前位置逐一向后移即可(用for()循环来完成)
*/
//[源程序]
#include”stdio.h”
#include”string.h”
#include”conio.h”
intfun(char*str,char*substr)
{inti,n=0,s=strlen(str);
for(i=0;i<s;i++)
if((str[i]==substr[0])&&(str[i+1]==substr[1]))
n++;
returnn;
}
main()
{
charstr[81],substr[3];
intn;
printf(“输入的字符串:”);
gets(str);
printf(“子字符串:”);
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf(“n=%d\n”,n)
}
/*******************************************************************************************************/
按你的意思偶改了下调用函数里的
intfun(char*str,char*substr)
{
inti,j,n=0,s=strlen(str),m=strlen(substr),pan=1;
printf(“%d\n”,m);
for(i=0;i<s;i++)
{pan=1;
for(j=0;j<m;j++)
if((str[i+j]!=substr[j]))//这是进行比较,不是跳出
{pan=0;
break;}
if(pan)
n++;
}
returnn;
}