解答:
#include <cstdio>
int main() {
int count;
char a, b;
int reuslt_a[3] = {0,0,0}, reuslt_b[3] = {0,0,0}; //胜、平、负
int a_B = 0, a_J = 0, a_C = 0; //包胜次数、剪胜次数、锤胜次数
int b_B = 0, b_J = 0, b_C = 0;
scanf("%d", &count);
getchar(); //吸收空格
//计算两人各自的胜负情况
for(int i=1; i<=count; i++){
a = getchar();
getchar(); //吸收空格
b = getchar();
getchar(); //吸收空格
if(a=='B' && b=='B') { //包包
reuslt_a[1]++;
reuslt_b[1]++;
}
else if(a=='J' && b=='J') { //剪剪
reuslt_a[1]++;
reuslt_b[1]++;
}
else if(a=='C' && b=='C') { //锤锤
reuslt_a[1]++;
reuslt_b[1]++;
}
else if(a=='C' && b=='J') { //锤剪
reuslt_a[0]++;
reuslt_b[2]++;
a_C++;
}
else if(a=='J' && b=='B') { //剪包
reuslt_a[0]++;
reuslt_b[2]++;
a_J++;
}
else if(a=='B' && b=='C') { //包锤
reuslt_a[0]++;
reuslt_b[2]++;
a_B++;
}
else if(a=='J' && b=='C') { //剪锤
reuslt_a[2]++;
reuslt_b[0]++;
b_C++;
}
else if(a=='B' && b=='J') { //包剪
reuslt_a[2]++;
reuslt_b[0]++;
b_J++;
}
else if(a=='C' && b=='B') { //锤包
reuslt_a[2]++;
reuslt_b[0]++;
b_B++;
}
}
//获取获胜次数最多的手势
char effective_a = 'B', effective_b = 'B';
if(a_C > a_B) {
effective_a = 'C';
if(a_J > a_C)
effective_a = 'J';
}
else if(a_J > a_B)
effective_a = 'J';
if(b_C > b_B) {
effective_b = 'C';
if(b_J > b_C)
effective_b = 'J';
}
else if(b_J > b_B)
effective_b = 'J';
//打印结果
printf("%d %d %d\n", reuslt_a[0], reuslt_a[1], reuslt_a[2]);
printf("%d %d %d\n", reuslt_b[0], reuslt_b[1], reuslt_b[2]);
printf("%c %c\n", effective_a, effective_b);
return 0;
}
笔记:
- scanf("%c")会识别空格