1.对最后一局的记录
2.数组要开大点
3.乒乓球11:10,21:20不算赢,超过一定数之后要赢两球
4.输出中间有个空行,比分中间没有空格
下面是ac代码
#include <iostream>
#include <cstdio>
using namespace std;
int c;
int m,n,i;
int m1,n1;
int a[10000000];
int a1[10000000];
int b[10000000];
int b1[10000000];
int t,t1;
int main()
{
m=0;n=0;m1=0;n1=0;
t=1;
t1=1;
while((c=getchar())!=EOF)
{
if (c=='W')
{ ++m;++m1;}
if (c=='L')
{ ++n;++n1;}
if (c=='E')
{
a[t]=m;
a1[t]=n;
b[t1]=m1;
b1[t1]=n1;
break;
}
if (m==11&&m-n>=2)
{
a[t]=m;
m=0;
a1[t]=n;
n=0;
t++;
}
else if (m>11&&m-n>=2)
{
a[t]=m;
m=0;
a1[t]=n;
n=0;
t++;
}
else if (n==11&&n-m>=2)
{
a[t]=m;
m=0;
a1[t]=n;
n=0;
t++;
}
else if (n>11&&n-m>=2)
{
a[t]=m;
m=0;
a1[t]=n;
n=0;
t++;
}
if(m1==21&&m1-n1>=2)
{
b[t1]=m1;
b1[t1]=n1;
m1=0;
n1=0;
t1++;
}
else if(m1>21&&m1-n1>=2)
{
b[t1]=m1;
b1[t1]=n1;
m1=0;
n1=0;
t1++;
}
else if(n1>21&&n1-m1>=2)
{
b[t1]=m1;
b1[t1]=n1;
m1=0;
n1=0;
t1++;
}
else if(n1==21&&n1-m1>=2)
{
b[t1]=m1;
b1[t1]=n1;
m1=0;
n1=0;
t1++;
}
}
for(i=1;i<=t;i++)
cout<<a[i]<<":"<<a1[i]<<endl;
cout<<endl;
for(i=1;i<=t1;i++)
cout<<b[i]<<":"<<b1[i]<<endl;
return 0;
}
我采用了数组记录结果的办法
m,n表示当前两个人11分制的分数
m1,n1表示当前两个人21分制的分数
a,a1两个数组存放第t局11分制的比分
b,b1两个数组存放第t1局21分制的比分
t,t1表示两种数据的局数
达到条件就存放比分,局数+1,输入到E就break
最后一并输出
我就是个渣,希望大牛勿喷,上面只是我找到的一些容易导致wa的问题。
如果有帮助记得点个赞
#include<string.h>
#include<memory.h>
using namespace std;
int main()
{
char s[100000],*p,*j;
int i=0,a[1000][2],b[1000][2];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
while(cin>>s[i]&&s[i]!='E')i++;
for(p=s,i=0;p<&s[strlen(s)];p+=11,i++)
{
for(j=p;j<p+11&&*j!='E';j++)
{
if(*j=='W')
a[i][0]++;
if(*j=='L')
a[i][1]++;
}
}
for(p=s,i=0;p<&s[strlen(s)];p+=21,i++)
{
for(j=p;j<p+21&&*j!='E';j++)
{
if(*j=='W')
b[i][0]++;
if(*j=='L')
b[i][1]++;
}
}
for(i=0;i<=(strlen(s)/11);i++)
cout<<a[i][0]<<":"<<a[i][1]<<endl;
cout<<endl;
for(i=0;i<=(strlen(s)/21);i++)
cout<<b[i][0]<<":"<<b[i][1]<<endl;
return 0;
}
其他也没问题,求问这样的话要怎么控制输入啊