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 }