易错点:

  1. 注意scanf("%c")会把换行符吃掉,会导致接收输入出错,所以要用getchar吃掉换行符;
#include<cstdio>
#include<algorithm>

using namespace std;

char mp[3] = {'B','C','J'};

int change(char c){
    if(c == 'B')    return 0;
    if(c == 'C')    return 1;
    if(c == 'J')    return 2;
}

int main(){

    int jia[3]={0},yi[3]={0};    //记录甲乙的胜负平情况 

    int j[3]={0},y[3]={0};    //记录甲乙的石头剪刀布的获胜情况 


    int n;
    scanf("%d",&n);

    char a,b;

    for(int i=0;i<n;i++){

        getchar();        //注意这个getchar是必须的,不然后面scanf会把换行符吃进去导致读取的换行符'\n' 

        scanf("%c %c",&a,&b);


        int k1 = change(a);
        int k2 = change(b);        //将甲乙的出拳转换为数字 

        if((k1+1)%3 == k2){        //甲赢 
            jia[0]++;
            yi[2]++;
            j[k1]++;
        }else if(k1 == k2){        //平局 
            jia[1]++;
            yi[1]++;
        }else{                    //乙赢 
            jia[2]++;
            yi[0]++;
            y[k2]++; 
        }
    }

    printf("%d %d %d\n",jia[0],jia[1],jia[2]);
    printf("%d %d %d\n",yi[0],yi[1],yi[2]);

    int max1=0,max2=0;
    for(int i=1;i<3;i++){
        if(j[i]>j[max1]) max1 = i;
        if(y[i]>y[max2]) max2 = i;
    }

    printf("%c %c",mp[max1],mp[max2]);

    return 0;
}