得分:
给出一个又X和O组成的串(长度为1-80),统计每个字符的得分之和。每个O的得分为已经连续出现的O的个数,X得分为0。例如:OOXXOXXOOOD的得分为1+2+0+0+1+0+0+1+2+3.
int main(){
int T;
char buf[128];
scanf("%d",&T);
getchar();
while(T--){
gets(buf);
int cnt=0,sum=0,sz=strlen(buf),i;
for(i=0;i<=sz;i++){
if(buf[i]=='O') sum+=++cnt;
else
cnt=0 ;
}
printf("%d\n",sum);
}
return 0;
}
【分析】:使用for循环对输入串的字符进行遍历,维护一个已经连续出现的‘O’个数的计算器cnt已经串的得分和sum。初始cnt=0,sum=0.如果遇到‘O’就++cnt,然后把cnt加到sum中,如果遇到‘X’就重置cnt为0;
如有错误或更好的想法,欢迎告知。