
我想说明几点:
【1】.我用功能函数把某些功能分离出来了
【2】.对于这样的字符串aaaaaa aa,就是字符串A为6个a,字符串B为2个a,我的程序输出的是3,而不是5。
【3】.如果字符串A的长度比字符串B的长度小,则输出0,因为无论如何字符串A也不可能包含字符串B的。
#include <stdio.h>
#include <string.h>
char s[200], a[200];
int ok(int i, int t)//计算从字符串s的i位置开始的t个字符是否是字符串a
{
int j, k;
for(j=i, k=0; k<t; j++, k++)
{
if(s[j] != a[k]) return 0;//0表示不是字符串a
}
return 1;
}
int count()
{
int i, j, num, t1, t2;
num=0;
t1 = strlen(s), t2 = strlen(a);
if(t1<t2) return 0;//如果字符串s比字符串a的长度还小,肯定不能包含字符串a
for(i=0; i<t1-t2+1; i++)
{
if(ok(i, t2)==1)
{
num++;
i = i + t2 - 1;
}
}
return num;
}
int main()
{
int i, j;
while(scanf("%s %s", s, a)==2)
{
printf("%d\n", count());
}
}
# include <string.h>
int cmp(char *p,char *q);
main()
{
char A[1024],B[1024],*p,*q;
int n,i;
puts("string A:");
gets(A);
puts("string B:");
gets(B);
p=A;
q=B;
n=0;
while(*p)
{
if(cmp(p,q))
++n;
++p;
}
printf("%d",n);
}
int cmp(char *p,char *q)
{
int i;
while(*q!='\0')
{
if(*q++!=*p++)
return 0;
}
return 1;
}
{
FILE *a;
link_stu p;
p=H->next;
a=fopen("stu.dat","w+");
fwrite(H,sizeof(lnode_stu),1,a);
char *b="12",*c=a;;
int i=0;
while((c=strstr(c,b))!=NULL)
{i++;
puts(c);
c+=strlen b; }
cout<<i;