```cpp
else if((a>=11||b>=11)&&fabs(a-b)>=2){
a = 0;
b = 0;
printf("%d:%d\n",a,b);
```
每一次对局结束后要给a,b归零
**PS:不要用goto,单独加一个变量作为两层循环跳出的判断条件就够了**
```cpp
int end = 0;
int i,j;
for(i=0;end!=1;i++)
for(j=0;end!=1;j++)
if(***)
end = 1;
```
而且每一次小循环里的for(j=0;;j++)都会跑j=0语句,不需要for(i=0;;i++,j=0)
by bridgeL @ 2019-12-31 14:09:07
@[bridgeL](/user/254631) 多谢多谢,已经按大佬说的改了,但是还是过不去。
如果先归零再输出的话永远都会输出0呀?,enmmmmm我想的是因为判断一局打完的时候已经又读入了一个字符,所以要继续判断是W或L,然后让a=1 b=0或a=0 b=1?
by PureJoy @ 2020-01-01 10:19:31
@[PureJoy](/user/272820)
你已经按照你的猜想试过了吗?还是RE吗?贴一下新的代码
by bridgeL @ 2020-01-02 17:02:05
@[bridgeL](/user/254631) 现在是这样的,之前那个在本地能过,传上来就不行了。
```
#include<stdio.h>
#include<math.h>
char record[30][2500];
int main()
{
int i=0,j=0;
char s;
s=getchar();
while(s!='E'){
if(s!='\n'){
record[i][j++]=s;
}else{
record[i][j++]='\n';
i++;
j=0;
}
s=getchar();
}
record[i][j++]='E';
int a=0,b=0,flag=1;
for(i=0;flag;i++){
for(j=0;record[i][j]!='\n'&&flag;j++){
if(record[i][j]=='E'){
printf("%d:%d\n\n",a,b);
flag=0;
break;
}
else if(a<11&&b<11&&record[i][j]=='W') a++;
else if(a<11&&b<11&&record[i][j]=='L') b++;
else if((a>=11||b>=11)&&fabs(a-b)<2&&record[i][j]=='W') a++;
else if((a>=11||b>=11)&&fabs(a-b)<2&&record[i][j]=='L') b++;
else if((a>=11||b>=11)&&fabs(a-b)>=2){
printf("%d:%d\n",a,b);
if(record[i][j]=='W'){
a=0;
b=0;
}
else if(record[i][j]=='L'){
a=0;
b=0;
}
}
}
}
a=0;
b=0;
flag=1;
for(i=0;flag=1;i++){
for(j=0;record[i][j]!='\n'&&flag=1;j++){
if(record[i][j]=='E'){
printf("%d:%d\n",a,b);
flag=0;
break;
}
else if(a<21&&b<21&&record[i][j]=='W') a++;
else if(a<21&&b<21&&record[i][j]=='L') b++;
else if((a>=21||b>=21)&&fabs(a-b)<2&&record[i][j]=='W') a++;
else if((a>=21||b>=21)&&fabs(a-b)<2&&record[i][j]=='L') b++;
else if((a>=21||b>=21)&&fabs(a-b)>=2){
printf("%d:%d\n",a,b);
if(record[i][j]=='W'){
a=0;
b=0;
}
else if(record[i][j]=='L'){
a=0;
b=0;
}
}
}
}
return 0;
}
by PureJoy @ 2020-01-04 01:31:58
RE是因为行列存反了,WA是因为21分制的逻辑关系不对:(
但是我改了一遍后,现在也是本地对了提交上去就WA。。。我也不知道咋回事了。。。
```
#include<stdio.h>
#include<math.h>
char record[2500][30] = {0};
int main()
{
int i=0,j=0;
char s;
s=getchar();
while(s!='E')
{
if(s!='\n')
record[i][j++]=s;
else
{
record[i][j++]='\n';
i++;
j=0;
}
s=getchar();
}
record[i][j++]='E';
int a=0,b=0,flag=1;
for(i=0;flag;i++)
{
for(j=0;record[i][j]!='\n'&&flag;j++)
{
// 判断循环结束
if(record[i][j]=='E')
{
printf("%d:%d\n\n",a,b);
flag=0;
break;
}
// 根据W/L加分
if(record[i][j]=='W')
a++;
else
b++;
// 判决本局胜负
if(a>=11||b>=11)
{
if(a-b>=2)
{
printf("%d:%d\n",a,b);
a = 0;
b = 0;
}
else if(b-a>=2)
{
printf("%d:%d\n",a,b);
a = 0;
b = 0;
}
}
}
}
a=0;
b=0;
flag=1;
for(i=0;flag;i++)
{
for(j=0;record[i][j]!='\n'&&flag;j++)
{
if(record[i][j]=='E')
{
printf("%d:%d\n",a,b);
flag=0;
break;
}
if(record[i][j]=='W')
a++;
else
b++;
if(a>=21||b>=21)
{
if(a-b>=2)
{
printf("%d:%d\n",a,b);
a = 0;
b = 0;
}
else if(b-a>=2)
{
printf("%d:%d\n",a,b);
a = 0;
b = 0;
}
}
}
}
return 0;
}
```
加油吧!
by bridgeL @ 2020-01-04 10:56:11
@[bridgeL](/user/254631)
(抱拳)谢大佬!
by PureJoy @ 2020-01-04 12:22:46