锤子剪刀布 (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;
}