1018 hammer scissors, C

#include <stdio.h>
int main()
{
	char a[1000]={0};
	char b[1000]={0};
	int i=0,c1=0,c2=0,c3=0,d1=0,d2=0,d3=0,j=0,h=0,n;
	int cc=0,cb=0,cj=0,dc=0,db=0,dj=0,m=0;

	scanf("%d\n",&n);

	while(n-1)			//n-1是为了减少一次输入,在后面单独拿出来
	{
		scanf("%c %c\n",&a[i],&b[i]);
		if(	(a[i]-b[i]==-7)||(a[i]-b[i]==8)||(a[i]-b[i]==-1) )				//布,锤子,剪刀,甲赢的时候分别是a[i]-b[i]==-1;-7;8		由ASCII码算出
		{	c1++;j++;d3++;
			if(a[i]-b[i]==-7)	cc++;
			else if(a[i]-b[i]==8)	cj++;
			else if(a[i]-b[i]==-1)	cb++;
		}
		else if( (a[i]-b[i]==7)||(a[i]-b[i]==-8)||(a[i]-b[i]==1) )			//乙赢与甲类似,只是甲乙顺序对调,所以符号相反
		{	d1++;h++;c3++;
			if(a[i]-b[i]==7)	dc++;
			else if(a[i]-b[i]==-8)	dj++;
			else if(a[i]-b[i]==1)	db++;
		}
		else if( (a[i]==b[i]) )		{c2++; d2++;}			//平局

		i++;
		n--;
	}
	scanf("%c %c",&a[i],&b[i]);									//循环后再来一遍是因为最后一组数据输入后,不需要再输入\n,即回车键
	if(	(a[i]-b[i]==-7)||(a[i]-b[i]==8)||(a[i]-b[i]==-1) )	
		{	c1++;j++;d3++;
			if(a[i]-b[i]==-7)	cc++;
			else if(a[i]-b[i]==8)	cj++;
			else if(a[i]-b[i]==-1)	cb++;
		}
		else if( (a[i]-b[i]==7)||(a[i]-b[i]==-8)||(a[i]-b[i]==1) )	
		{	d1++;h++;c3++;
			if(a[i]-b[i]==7)	dc++;
			else if(a[i]-b[i]==-8)	dj++;
			else if(a[i]-b[i]==1)	db++;
		}
		else if( (a[i]==b[i]) )		{c2++; d2++;}
															

		if(cb>=cc)	{if(cb<cj)	m=3;else if(cb>=cj)	m=1;}
		else if(cb<cc)	{if(cc<cj)	m=3;else if(cc>=cj)	m=2;}		//此处是分别比较甲、乙获胜次数最多的手势

		if(db>=dc)	{if(db<dj)	n=3;else if(db>=dj)	n=1;}
		else if(db<dc)	{if(dc<dj)	n=3;else if(dc>=dj)	n=2;}		//此处m,n为1,2,3分别代表赢时的b,c,j;	n此时已经无用,所以拿来用在这里没问题


	printf("%d %d %d\n",c1,c2,c3);
	printf("%d %d %d\n",d1,d2,d3);		//甲乙,赢平输,次数输出

	switch(m)
	{case 1:printf("B ");	break;
	case 2:printf("C ");	break;
	case 3:printf("J ");	break;
    default:printf("  ");	break;}
	switch(n)
	{case 1:printf("B");	break;
	case 2:printf("C");	    break;
	case 3:printf("J");	    break;
    default:printf(" ");	break;}		//甲乙手势输出

	system("pause");
	return 0;
}
Published 44 original articles · won praise 0 · Views 887

Guess you like

Origin blog.csdn.net/weixin_43916400/article/details/104378501