解题思路:
1.利用while循环逐个读入字符,并存储到字符数组中,当字符为E的时候结束读入。
2.对保存的字符数组遍历,如果是W则华华得一分,否则就是对手得一分,所以设置两个累加器,每次计分的时候判断两者的分数是否有一个是大于等于11的,如果有,判断一下绝对值,分差大于等于2 的时候,输出计分器并换行,然后计分器重新归零,继续计分
3.注意:当所有字符都读入的时候,计分器可能在最后一轮并没有达到规定输出,所以把此时的计分器输出
4.21分赛制的处理相同
#include<bits/stdc++.h>
using namespace std;
char a[70000];
int main()
{
char ans;//定义字符变量
int num=0;//存入字符数组的下标
while(cin>>ans)//输入ans
{
if(ans=='E')//如果输入的是E
break;//结束录入
else
{
num++;
a[num]=ans;
}//将字符存入到字符数组中
}
int sum1=0,sum2=0;//sum1为华华计分器,sum2位对手的计分器
for(int i=1;i<=num;i++)//依次遍历字符数组中的字符
{
if(a[i]=='W')//如果是w,华华得一分
sum1++;
else//否则对手得一分
sum2++;
if(sum1>=11||sum2>=11)//两人有一人到达11分并且分差大于2的时候
{
if(abs(sum1-sum2)>=2)
{
cout<<sum1<<":"<<sum2<<endl;//结束比赛
sum1=0;//计分器归零
sum2=0;
}
}
}
//如果还有没比完的比赛,输出比分
cout<<sum1<<":"<<sum2<<endl;
cout<<endl;
//下面是21分赛制的结果
sum1=0,sum2=0;
for(int i=1;i<=num;i++)
{
if(a[i]=='W')
sum1++;
else
sum2++;
if(sum1>=21||sum2>=21)//两人有一人到达21分并且分差大于2的时候
{
if(abs(sum1-sum2)>=2)
{
cout<<sum1<<":"<<sum2<<endl;//结束比赛
sum1=0;//计分器归零
sum2=0;
}
}
}
cout<<sum1<<":"<<sum2<<endl;
return 0;
}