一道学校的编程题目,找不到出错的地方,求解了
程序代码:#include<stdio.h>
#include<string.h>
#define FOR(i,n) for(i=0;i<n;i++)
int main()
{
char str [105];
int str2[105];//标记函数
memset(str,0,sizeof(str));
memset(str2,0,sizeof(str2));
while(scanf("%s",str)!=EOF)
{
int n=strlen(str);
int i,acount=0;
FOR(i,n)
{
if(str[i]=='A'&str2[i]==0)//先找到A,再从前面或者后面查CM的字符;
{
if(i>=2&&str[i-1]=='C'&&str2[i-1]==0&&str[i-2]=='M'&&str2[i-2]==0)
acount+=1,str2[i]=str2[i-1]=str2[i-2]=1;
else if(str[i+1]=='C'&&str2[i+1]==0&&str[i+2]=='M'&&str2[i+2]==0)
acount+=1,str2[i]=str2[i+1]=str2[i+2]=1,i+=2;
}
}
if(3*acount!=n)//剩余元素判断
{
for(i=0; i+1<n; i++)
{
if(str2[i]==0&&str2[i+1]==0&&str[i+1]!=str[i])
{
acount+=1;
break;
}
}
}
printf("%d\n",acount);
memset(str,0,sizeof(str));
memset(str2,0,sizeof(str2));
}
return 0;
}实在找不出错在哪里,可以指出我的逻辑错误或者我少考虑哪一种情况呢?









~