|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
鄙人小白,在线求助大佬,谢谢
题目是乒乓球比赛规则规定在一局比赛中,先得11分的一方为胜方,10平后,先多得2分的一方为胜方。也就是说十分后一定要领先2分,才算胜方,比如11:10不行,要继续比赛直到一方获胜。现请你写一段程序来判断一局比赛的胜负。
输入:只有一行,为用空格分隔的两个整数m,n(0<=m,n<=200),依次代表A选手和B选手的得分。
输出:
只有一行,如果A获胜则输出A win,如果B获胜则输出B win,如果无法判断胜负(比如7:8),则输出no result,如果出现不可能出现的比分(比如13:5),则输出error。
#include <stdio.h>
#include <math.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
if(m>=0&&m<=200&&n>=0&&n<=200)
{
if(m==11&&n<10||m>11&&n<m&&fabs(m-n)==2)
{
printf("A win");
}
else if(n==11&&m<10||n>11&&m<n&&fabs(n-m)==2)
{
printf("B win");
}
else if(fabs(m-n)<2)
{
printf("no result");
}
else
{
printf("error");
}
}
else
{
printf("error");
}
return 0;
}
我写的是上面这个,有错误吗?一直通过不了学校OJ,谢谢解答
本帖最后由 xieglt 于 2020-10-23 18:18 编辑
代码没问题,只是不够简洁。修改了一下,你看看可以不
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int m,n;
- scanf("%d%d",&m,&n);
- if(m>=0&&m<=200&&n>=0&&n<=200)
- {
- //比分差 < 2 或者 两得分都 < 11判定为 no result
- if(fabs(m-n) < 2 || (m < 11 && n < 11))
- {
- printf("no result");
- }
- //比分差 > 2 且有一个得分 > 11 判定为输入错误
- else if(fabs(m-n) > 2 && (m > 11 || n >11))
- {
- printf("error");
- }
- else if(m > n)
- {
- printf("A Win");
- }
- else
- {
- printf("B Win");
- }
- }
- else
- {
- printf("error");
- }
- return 0;
- }
复制代码
|
|