该题需要按照连续的'O'来统计得分,那么只需要设一个得分数组score[],存储每个字符对应的分数。在循环中将数组中的数值得分相对于前一个值+1 score[i] = score[i-1]+1,如果遇到字符'X'直接将该位置的得分置0即可。
这里需要注意的是对于score数组的第一个值的初始化,通过判断str数组的第一个字符然后初始化一下就行了。
#include<stdio.h>
#include<string.h>
#define maxn 80+5
int main()
{
int T, score[maxn];
char str[maxn];
scanf("%d", &T);
while(T--)
{
scanf("%s", str);
//初始化需要判断第一个字符
score[0] = (str[0] == 'O') ? 1 : 0;
for(int i = 1; i < strlen(str); i++)
{
score[i] = score[i-1] + 1;
// 如果遇到 X 则更新 score[i] 为 0
if(str[i] == 'X') score[i] = 0;
}
int sum = 0;
for(int i = 0; i < strlen(str); i++) sum += score[i];
printf("%d\n", sum);
}
return 0;
}