B1018

    技术2025-09-24  48

    锤子剪刀布 (20分)

    总结:

    涉及char的读入遇到换行,注意getchar(); 吃掉换行。或者改为scanf("\n%c %c", &a,&b); 吃掉多余换行符。

    代码:

    #include<cstdio> int main() { int n; scanf("%d", &n); int wa, ta, la, wb, tb, lb; wa = ta = la = wb = tb = lb = 0; int wina[3]={0}, winb[3]={0}; //0B 1C 2J获胜的次数 for( int i=0; i<n; i++){ getchar(); //吃掉换行 char a,b; scanf("%c %c", &a,&b); switch(a){ case 'C': if(b=='C'){ ta++; tb++; } else if(b=='J'){ wa++; wina[1]++; lb++; }else if(b=='B'){ la++; wb++; winb[0]++; } break; case 'J': if(b=='J'){ ta++; tb++; } else if(b=='B'){ wa++; wina[2]++; lb++; }else if(b=='C'){ la++; wb++; winb[1]++; } break; case 'B': if(b=='B'){ ta++; tb++; } else if(b=='C'){ wa++; wina[0]++; lb++; }else if(b=='J'){ la++; wb++; winb[2]++; } break; } } printf("%d %d %d\n", wa, ta, la); printf("%d %d %d\n", wb, tb, lb); int ka=0,kb=0; for(int i=1; i<3; i++){ if(wina[i]>wina[ka]) ka=i; if(winb[i]>winb[kb]) kb=i; } switch(ka){ case 0:printf("B ");break; case 1:printf("C ");break; case 2:printf("J "); } switch(kb){ case 0:printf("B");break; case 1:printf("C");break; case 2:printf("J"); } return 0; }

     

    Processed: 0.022, SQL: 9