一、概述
输入若干次两人对战记录,输出双方各自胜负平的次数,并输出胜率最高的出法,若有胜率相等的,按字典序输出。
本题易错点在于利用scanf记录输入的字符时容易出错。以及按字典序输出时容易写的很麻烦。我就是这样。
二、分析
1、输入
样例如下
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
如果直接按
scanf("%c %c",&A,&B);
//或
scanf("%c,%c",&A,&B);
//或
scanf(" %c, %c",&A,&B);
这三种的任意一种输入,都不可行,原因如下:
第一种:需要输入是“字符空格*n换行*n字符”,而实际上我们的输入是“换行字符空格字符”
第二种:需要输入是“字符逗号字符”,同理。
第三种:需要输入的是“空格*n换行*n字符逗号空格*n换行*n字符”,同理。
即:
scanf中双引号中的内容即是输入模式,双引号中有逗号,输入时就要有逗号,双引号中有空格,则代表着若干个空格加上若干个换行。因此,我们的输入如下:
scanf(" %c %c");
即可。也可用getchar函数吃掉第一个换行。
2、输出胜率最高的出法
我是一堆if else来算的。很是麻烦。分成七种情况:
B最大,C最大,J最大,B==C且J最小,B==J且C最小,C==J且B最小,三者相等。
实际上可以用字母转换为数字,将最开始输入的BCJ转为012,然后会简单很多。
三、总结
字母转数字的方法很好,可以省去很多行代码,但是想到这个方法还是要花一点时间的。
PS:代码如下:
#include<stdio.h>
int main()
{
int count;
scanf("%d", &count);
int i = 0;
char A, B;
int winA = 0, winB = 0, loseA = 0, loseB = 0, equal = 0;
int winAC = 0, winAJ = 0, winAB = 0;
int winBC = 0, winBJ = 0, winBB = 0;
while (i < count)
{
scanf(" %c %c", &A, &B);
if (A == B)
equal++;
else if (A == 'C'&&B == 'J')
{
winA++;
loseB++;
winAC++;
}
else if (A == 'C'&&B == 'B')
{
winB++;
loseA++;
winBB++;
}
else if (A == 'J'&&B == 'C')
{
winB++;
loseA++;
winBC++;
}
else if (A == 'J'&&B == 'B')
{
winA++;
loseB++;
winAJ++;
}
else if (A == 'B'&&B == 'J')
{
winB++;
loseA++;
winBJ++;
}
else if (A == 'B'&&B == 'C')
{
winA++;
loseB++;
winAB++;
}
i++;
}
printf("%d %d %d\n", winA, equal, loseA);
printf("%d %d %d\n", winB, equal, loseB);
if (winAB > winAC&&winAB > winAJ)
printf("B ");
else if (winAC > winAB&&winAC > winAJ)
printf("C ");
else if (winAJ > winAC&&winAJ > winAB)
printf("J ");
else if (winAB == winAC&&winAB > winAJ)
printf("B ");
else if (winAB == winAJ&&winAB > winAC)
printf("B ");
else if (winAJ == winAC&&winAJ > winAB)
printf("C ");
else
printf("B ");
if (winBB > winBC&&winBB > winBJ)
printf("B");
else if (winBC > winBB&&winBC > winBJ)
printf("C");
else if (winBJ > winBC&&winBJ > winBB)
printf("J");
else if (winBB == winBC&&winBB > winBJ)
printf("B");
else if (winBB == winBJ&&winBB > winBC)
printf("B");
else if (winBJ == winBC&&winBJ > winBB)
printf("C");
else
printf("B");
}