#includechar max(int ,int , int ); int main(void) { int num,sum; char fir, sec; int cfir = 0, jfir = 0, bfir = 0, csec = 0, jsec = 0, bsec = 0; int win = 0, lose = 0; scanf("%d", &num); getchar();//首先,因为题意,读取num后要空一行,所以会有换行符,而下一行正好要读取字符,所以得消去'n' sum = num; do{ scanf("%c %c", &fir, &sec); getchar();//与上述同理 if (fir == 'C')//字符的比较,一定要用''表明这是一个字符 { if (sec == 'J') { cfir++; win++; continue; } if (sec == 'B') { bsec++; lose++; continue; } } else if (fir == 'J') { if (sec == 'B') { jfir++; win++; continue; } if (sec == 'C') { csec++; lose++; continue; } } else if (fir == 'B') { if (sec == 'J') { jsec++; lose++; continue; } if (sec == 'C') { bfir++; win++; continue; } } else continue; }while (--sum);//使用递减运算符就得认识到这是在自损,也就是说原变量的值会发生改变 printf("%d %d %dn", win, (num - win - lose), lose); printf("%d %d %dn", lose, (num - win - lose), win); printf("%c %cn", max(cfir, jfir, bfir), max(csec, jsec, bsec)); return 0; } char max (int c, int j, int b) { if (c == j && c== b) return 'B'; else if (c == j) { if (c > b) return 'C'; else return 'B'; } else if (c == b) { if (c > j) return 'B'; else return 'J'; } else if (b == j) { if (c > b) return 'C'; else return 'B'; } else { if (c > b && c > j) return 'C'; if (b > j && b > c) return 'B'; if (j > b && j > c) return 'J'; } }
坚持刷题,在题海中认识自己的不足。



