请问这道C++题怎么做?

2025-02-25 08:12:08
推荐回答(2个)
回答1:

#include

#include

int main()

{ int n,i,a[3],b[3],win[3]= {0};

  scanf("%d",&n);

  while(n--)

  { b[0]=b[1]=b[2]=0;

    for(i=0; i<3; i++)

    { scanf("%d",&a[i]);

      b[a[i]]=1;

    }

    if(b[0]+b[1]+b[2]!=2)continue;

    if(abs(a[0]-a[1])==1)

    { if(a[0]

        win[0]++,win[1]--;

      else win[0]--,win[1]++;

    }

    if(abs(a[0]-a[1])==2)

    { if(a[0]>a[1])

        win[0]++,win[1]--;

      else win[0]--,win[1]++;

    }

    if(abs(a[0]-a[2])==1)

    { if(a[0]

        win[0]++,win[2]--;

      else win[0]--,win[2]++;

    }

    if(abs(a[0]-a[2])==2)

    { if(a[0]>a[2])

        win[0]++,win[2]--;

      else win[0]--,win[2]++;

    }

    if(abs(a[1]-a[2])==1)

    { if(a[1]

        win[1]++,win[2]--;

      else win[1]--,win[2]++;

    }

    if(abs(a[1]-a[2])==2)

    { if(a[1]>a[2])

        win[1]++,win[2]--;

      else win[1]--,win[2]++;

    }

  }

  for(i=0; i<3; i++)

    printf("%d\n",win[i]);

  return 0;

}

回答2:

#include

using namespace std;

int JD(int X,int Y)//判断剪刀石头布胜负的函数,胜利为1,平为0,输为-1

{

switch (X-Y) {case -1: return 1;break;

case 0: return 0;break;

case 2:return 1;break;

default :return -1;break;

}

}

int n,a,b,c,A,B,C;

int main()

{

cin>>n;

     while (n--)

{

cin>>a>>b>>c;

A+=JD(a,b)+JD(a,c);

B+=JD(b,a)+JD(b,c);

C+=JD(c,a)+JD(c,b);


}

  cout<

return 0;

}