例如下面代码:
#include"stdio.h"
#include"string.h"
void main()
{char cc[10]={'B','C','C','B','C','B','C','B','B'};
int i,j,n,num[2]={0};
n=strlen(cc);
printf("n=%d\n",n);
if(cc[0]=='B'&&cc[1]=='B')
num[1]+=2;
else num[1]+=0;
if(cc[0]=='C')num[0]+=1;
if(cc[1]=='C')num[0]+=1;
for(i=2;i<(n-1);i++)
{if(cc[i]=='C')num[0]+=1;
else num[0]+=0;
if(cc[i]=='B'&&cc[i+1]=='B')num[1]+=1;
else if((cc[i-1]!='B'&&cc[i+1]=='B'))
num[1]+=0;
}
if(cc[n-2]=='B'&&cc[n-1]=='B')num[1]+=2;
if(cc[n-1]=='C')num[0]+=1;
for(j=0;j<2;j++)
printf(" %d ",num[j]);
}
提出问题的朋友目地是想统计字符串中c的个数,只要c出现就统计;b的个数,但是要求b连续两个或两个以上出现时才统计,如cbc不被统计。
但是在运行过程中总出现多或者少记的情况
解决这个问题的办法是:
统计B的时候判断一下B前面是不是B,如果是B则b的计数器不加,只有B前面的一个字符不是B并且后面的还是B的时候才累加B的计数器。