话不多说,上题
输入:
第一行是一个整数N,表示一共进行了N次游戏。1 ≤ N ≤ 100。 接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头、剪子或者是布): S1 S2 字符串之间以空格隔开S1,S2只可能取值在{“Rock”, “Scissors”, “Paper”}(大小写敏感)中。
输出格式:
包括N行,每一行对应一个胜利者(Player1或者Player2),或者游戏出现平局,则输出Tie。
测试输入:
3 3
Rock ScissorsRock Rock
Paper Paper Paper Paper
Rock PaperScissorScissors(这里输入错误,所以下面输出只有两个平局)
预期输出:
Player1 Tie
TieTie
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;elsea[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;elsea[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;elsea[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的范围,输入的字符串正确(我用的字符串比较函数,注意相等的返回值为零)
过于冗长
绝对菜鸟级别,希望能得到大家赐教。