/***********************************************
得分
给出一个由 O 和 X 组成的串(长度为1~80),统计每个字符的得分之和,每个 O 的得分为已经连续出现的
O 的个数,X 的的得分为 0 。例如,OOXXOXXOOO 的得分为 1+2+0+0+1+0+0+1+2+3=10.
***********************************************/
尝试
(并不难。。。)
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[50];
cin.getline(a,50);
int ans=0,i=0;
while(i<strlen(a)){//遍历整个字符串
int num=0;
while(a[i]=='O') {
num++;i++;
}
ans+=(num+1)*num/2;//得到个数直接计算总分
i++;
}
cout<<"分数为:"<<ans;
return 0;
}
赏析参考答案
//参考答案
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int T;//记录输入个数
char buf[128];
scanf("%d\n",&T);
int sum=0;
while(T--){
gets(buf);//一次输入一个元素
int cnt=0,sz=strlen(buf);
for(int i=0;i<sz;i++){
if(buf[i]=='O') sum+=(++cnt);
else cnt=0;
}
printf("%d\n",sum);
}
return 0;
}