话不多说,上题
输入:
第一行是一个整数N,表示一共进行了N次游戏。1 ≤ N ≤ 100。 接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头、剪子或者是布): S1 S2 字符串之间以空格隔开S1,S2只可能取值在{“Rock”, “Scissors”, “Paper”}(大小写敏感)中。
输出格式:
包括N行,每一行对应一个胜利者(Player1或者Player2),或者游戏出现平局,则输出Tie。
测试输入:
3 3
Rock Scissors Rock Rock
Paper Paper Paper Paper
Rock Paper Scissor Scissors (这里输入错误,所以下面输出只有两个平局)
预期输出:
Player1 Tie
Tie Tie
Player2
总有一些大哥(傻Ⅹ)会输入N大于100或者小于1,或者将剪刀、石头、布输入出错,所以我们必须将题目条件全部考虑(上面加粗倾斜的部分)。
好的,放结果。
#include<stdio.h>
#include<string.h>
int main()
{
int N,i,a[100]; #数列a[]存数值,确定输出的是哪一方
char s1[10],s2[10],r[10]={"Rock"},s[10]={"Scissors"},p[10]={"Paper"};
scanf("%d",&N);
if(N>=1&&N<=100) #判断是否符合范围
{
for(i=0;i<N;i++)
{
scanf("%s %s",&s1,&s2);
if(s1[0]=='R'&&!(strcmp(s1,r))) #穷举。将输入的s1与石头剪子布比较
{
if(!(strcmp(s2,r))) #讨论s2的情况
a[i]=3;
else if(!(strcmp(s2,s)))
a[i]=1;
else a[i]=2;
}
else if(s1[0]=='S'&&!(strcmp(s1,s)))
{
if(!(strcmp(s2,s)))
a[i]=3;
else if(!(strcmp(s2,r)))
a[i]=2;
else a[i]=1;
}
else if(s1[0]=='P'&&!(strcmp(s1,p)))
{
if(!(strcmp(s2,p)))
a[i]=3;
else if(!(strcmp(s2,s)))
a[i]=2;
else a[i]=1;
}
}
for(i=0;i<N;i++)
{switch(a[i])
{
case 1:printf("Player1\n"); break;
case 2:printf("Player2\n"); break;
case 3:printf("Tie\n"); break;
default:;
}
}
}
else;
return 0;
}
主要是确保N的范围,输入的字符串正确(我用的字符串比较函数,注意相等的返回值为零)
过于冗长
绝对菜鸟级别,希望能得到大家赐教。