一道学校的编程题目,找不到出错的地方,求解了
程序代码:
#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; }
实在找不出错在哪里,可以指出我的逻辑错误或者我少考虑哪一种情况呢?