PAT B1018 锤子剪刀布

题目链接

代码如下
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int n,a[3]={0},b[3]={0},a1[3]={0},b1[3]={0};//a[3],b[3]分别用来统计甲乙胜平负的次数,a1[3],b1[3]分别用来统计甲乙用锤子、剪刀、布获胜的次数
    char ss1,ss2;//ss1,ss2分别暂存甲乙的手势
    scanf("%d",&n);
    while(n--){getchar();
        scanf("%c %c",&ss1,&ss2);
        switch(ss1){case 'C':{switch(ss2){      //甲出锤子的情况
           case 'C':{a[1]++;b[1]++;break;}//平
           case 'J':{a[0]++;b[2]++;a1[0]++;break;}//甲胜乙负
           case 'B':{a[2]++;b[0]++;b1[2]++;break;}//乙胜甲负
        }break;
        }
        case 'J':{switch(ss2){      //甲出剪刀的情况
           case 'J':{a[1]++;b[1]++;break;}//平
           case 'B':{a[0]++;b[2]++;a1[1]++;break;}//甲胜乙负
           case 'C':{a[2]++;b[0]++;b1[0]++;break;}//乙胜甲负
        }break;
        }
        case 'B':{switch(ss2){      //甲出剪刀的情况
           case 'B':{a[1]++;b[1]++;break;}//平
           case 'C':{a[0]++;b[2]++;a1[2]++;break;}//甲胜乙负
           case 'J':{a[2]++;b[0]++;b1[1]++;break;}//乙胜甲负
        }break;
        }}}
        for(int i=0;i<3;i++){//分别输出甲胜平负的次数
            printf("%d",a[i]);if(i!=2)printf(" ");
        }
        cout<<endl;
        for(int i=0;i<3;i++){//分别输出乙胜平负的次数
            printf("%d",b[i]);if(i!=2)printf(" ");
        }
        cout<<endl;

        if(a1[2]>=a1[0]){//判定甲赢次数最多的手势
            if(a1[2]>=a1[1])printf("B " );
            else printf("J ");
        }
        else{
            if(a1[0]>=a1[1])printf("C ");
            else printf("J ");
        }
      if(b1[2]>=b1[0]){//判定乙赢次数最多的手势
            if(b1[2]>=b1[1])printf("B" );
            else printf("J");
        }
        else{
            if(b1[0]>=b1[1])printf("C");
            else printf("J");
        }
return 0;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值