pat乙级1018wa

pat乙1018题,在pat中不能得到正确答案,在本地测试可以
源代码:
#include 

int main(void){
    int t = 0;
    scanf("%d",&t);
    char a,b;
    int win_a,win_b = 0;
    int count_a[3] = {0};
    int count_b[3] = {0};
    for(int i = 0;i < t;i++){
        getchar();
        scanf("%c %c",&a,&b);
        if(a == 'C'){               //甲出锤子的情况
            if(b == 'J'){
                win_a++;
                count_a[0]++;
            }
            else if(b == 'B'){
                win_b++;
                count_b[2]++;
            }
        }
        else if(a == 'J'){        //甲出锤子的情况
            if(b == 'C'){
                win_b++;
                count_b[0]++;
            }
            else if(b == 'B'){
                win_a++;
                count_a[1]++;
            }
        }
        else if(a == 'B'){        //甲出布的情况
            if(b == 'C'){
                win_a++;
                count_a[2]++;
            }
            else if(b == 'J'){
                win_b++;
                count_b[1]++;
            }
        }
    }
    char big_a,big_b;int ja,jb = 0;
    for(int i,a_ = 0;i < 3;i++){
        if(count_a[i] > a_){
            a_ = count_a[i];
            ja = i;
        }
    }
    switch(ja){
        case 0:
            big_a = 'C';
        case 1:
            big_a = 'J';
        case 2:
            big_a = 'B';
    }
    for(int i,b_ = 0;i < 3;i++){
        if(count_b[i] > b_){
            b_ = count_b[i];
            jb = i;
        }
    }
    switch(jb){
        case 0:
            big_b = 'C';
        case 1:
            big_b = 'J';
        case 2:
            big_b = 'B';
    }
    printf("%d %d %d\n",win_a,t - win_a -win_b,win_b);
    printf("%d %d %d\n",win_b,t - win_a -win_b,win_a);
    printf("%c %c\n",big_a,big_b);
    return 0;
}

正确输出:
5 3 2
2 3 5
B B


pat运行结果:
-591599579 591599587 2
2 591599587 -591599579
B B

刚学代码,自己不知道哪里出错了,麻烦大伙给看看

第11行的getchar() 删除。
第12行scanf("%c %c",&a,&b); 修改为:scanf(" %c %c", &a, &b);
第45行 for(int i,a_ = 0;i < 3;i++) 修改为:for (int i = 0, a_ = 0; i < 3; i++)
第59行 for(int i,b_ = 0;i < 3;i++) 修改为:for (int i = 0, b_ = 0; i < 3; i++)
以上错误修改如下,逻辑判断统计上还有问题,最后的数值结果不对,供参考:

#include <cstdio>
int main(void) {
    int t = 0;
    scanf("%d", &t);
    char a, b;
    int win_a, win_b = 0;
    int count_a[3] = { 0 };
    int count_b[3] = { 0 };
    for (int i = 0; i < t; i++) {
        //getchar();             //修改
        scanf(" %c %c", &a, &b);  //scanf("%c %c", &a, &b);修改
        if (a == 'C') {               //甲出锤子的情况
            if (b == 'J') {
                win_a++;
                count_a[0]++;
            }
            else if (b == 'B') {
                win_b++;
                count_b[2]++;
            }
        }
        else if (a == 'J') {        //甲出锤子的情况
            if (b == 'C') {
                win_b++;
                count_b[0]++;
            }
            else if (b == 'B') {
                win_a++;
                count_a[1]++;
            }
        }
        else if (a == 'B') {        //甲出布的情况
            if (b == 'C') {
                win_a++;
                count_a[2]++;
            }
            else if (b == 'J') {
                win_b++;
                count_b[1]++;
            }
        }
    }
    char big_a, big_b; int ja, jb = 0;
    for (int i = 0, a_ = 0; i < 3; i++) {   //for (int i, a_ = 0; i < 3; i++) 修改
        if (count_a[i] > a_) {
            a_ = count_a[i];
            ja = i;
        }
    }
    switch (ja) {
    case 0:
        big_a = 'C'; break; //修改
    case 1:
        big_a = 'J'; break; //修改
    case 2:
        big_a = 'B'; break; //修改
    }
    for (int i = 0, b_ = 0; i < 3; i++) {   //for (int i, b_ = 0; i < 3; i++)
        if (count_b[i] > b_) {
            b_ = count_b[i];
            jb = i;
        }
    }
    switch (jb) {
    case 0:
        big_b = 'C'; break; //修改
    case 1:
        big_b = 'J'; break; //修改
    case 2:
        big_b = 'B'; break; //修改
    }
    printf("%d %d %d\n", win_a, t - win_a - win_b, win_b);
    printf("%d %d %d\n", win_b, t - win_a - win_b, win_a);
    printf("%c %c\n", big_a, big_b);
    return 0;
}