菜鸟写C语言———石头剪子布

话不多说,上题

输入:

       第一行是一个整数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的范围,输入的字符串正确(我用的字符串比较函数,注意相等的返回值为零)

过于冗长

绝对菜鸟级别,希望能得到大家赐教。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phyzj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值