易错点:
- 注意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; }