第11行的getchar() 删除。
第12行scanf("%c %c",&a,&b); 修改为:scanf(" %c %c", &a, &b);
第45行 for(int i,a_ = 0;i < 3;i++) 修改为:for (int i = 0, a_ = 0; i < 3; i++)
第59行 for(int i,b_ = 0;i < 3;i++) 修改为:for (int i = 0, b_ = 0; i < 3; i++)
以上错误修改如下,逻辑判断统计上还有问题,最后的数值结果不对,供参考:
#include <cstdio>
int main(void) {
int t = 0;
scanf("%d", &t);
char a, b;
int win_a, win_b = 0;
int count_a[3] = { 0 };
int count_b[3] = { 0 };
for (int i = 0; i < t; i++) {
//getchar(); //修改
scanf(" %c %c", &a, &b); //scanf("%c %c", &a, &b);修改
if (a == 'C') { //甲出锤子的情况
if (b == 'J') {
win_a++;
count_a[0]++;
}
else if (b == 'B') {
win_b++;
count_b[2]++;
}
}
else if (a == 'J') { //甲出锤子的情况
if (b == 'C') {
win_b++;
count_b[0]++;
}
else if (b == 'B') {
win_a++;
count_a[1]++;
}
}
else if (a == 'B') { //甲出布的情况
if (b == 'C') {
win_a++;
count_a[2]++;
}
else if (b == 'J') {
win_b++;
count_b[1]++;
}
}
}
char big_a, big_b; int ja, jb = 0;
for (int i = 0, a_ = 0; i < 3; i++) { //for (int i, a_ = 0; i < 3; i++) 修改
if (count_a[i] > a_) {
a_ = count_a[i];
ja = i;
}
}
switch (ja) {
case 0:
big_a = 'C'; break; //修改
case 1:
big_a = 'J'; break; //修改
case 2:
big_a = 'B'; break; //修改
}
for (int i = 0, b_ = 0; i < 3; i++) { //for (int i, b_ = 0; i < 3; i++)
if (count_b[i] > b_) {
b_ = count_b[i];
jb = i;
}
}
switch (jb) {
case 0:
big_b = 'C'; break; //修改
case 1:
big_b = 'J'; break; //修改
case 2:
big_b = 'B'; break; //修改
}
printf("%d %d %d\n", win_a, t - win_a - win_b, win_b);
printf("%d %d %d\n", win_b, t - win_a - win_b, win_a);
printf("%c %c\n", big_a, big_b);
return 0;
}