chenxi16

导航

PAT (Basic Level) Practice (中文) 1018 锤子剪刀布

 1 #include<stdio.h>
 2 
 3 // c:0 j:1 b:2     0:胜 1:平 2:负
 4 int n,p1[3],p2[3],num[3];
 5 
 6 void read();
 7 void deal(int x,int y);
 8 int change(char a);
 9 char unchange(int x);
10 void print();
11 int main(){
12     read();
13     print();
14     return 0;
15 }
16 void read(){
17     char a,b;
18     int x,y;
19     for(int i=0;i<=2;i++){
20         num[i]=0;
21         p1[i]=0;
22         p2[i]=0;
23     }
24     scanf("%d",&n);
25     for(int i=0;i<n;i++){
26         getchar();
27         scanf("%c",&a);
28         getchar();
29         scanf("%c",&b);
30         x = change(a);
31         y = change(b);
32         deal(x,y);
33     }
34 }
35 void deal(int x,int y){
36     if(x==y) {num[1]++; return;}
37     if((x==0&&y==1)||(x==1&&y==2)||(x==2&&y==0)){num[0]++;p1[x]++;return;}
38     else{
39         num[2]++;
40         p2[y]++;
41         return;
42     }
43 }
44 int change(char a){
45     switch(a){
46         case 'B': return 0;
47         case 'J': return 2;
48         case 'C': return 1;
49     }
50 }
51 char unchange(int x){
52     switch(x){
53         case 0: return 'B';
54         case 1: return 'C';
55         case 2: return 'J';
56     }
57 }
58 void print(){
59     int i,j,ma=0,mb=0;
60     printf("%d %d %d\n",num[0],num[1],num[2]);
61     printf("%d %d %d\n",num[2],num[1],num[0]);
62     for(i=0;i<=2;i++){
63         if(p1[i]>ma) ma = p1[i];
64         if(p2[i]>mb) mb = p2[i];
65     }
66     int flag=0;
67     for(i=0;i<=2;i++){
68         char c;
69         if(p1[i]==ma){c = unchange(i);
70         if(flag!=0) printf(" ");
71         flag++;
72         printf("%c",c);
73         break;
74         } 
75     }
76     for(i=0;i<=2;i++){
77         char c;
78         if(p2[i]==mb) {c = unchange(i);
79         if(flag!=0) printf(" ");
80         flag++;
81         printf("%c",c);
82         break;
83         }
84     }
85 
86    
87 }
View Code

 

posted on 2020-04-15 10:02  chenxi16  阅读(129)  评论(0编辑  收藏  举报