【每天例题】蓝桥杯 C语言 生活大爆炸版石头剪刀布

生活大爆炸版石头剪刀布

题目

 

 

 思路分析

1.先输入甲乙对应的周期

2.将周期对应放入每轮出拳

3.进行输赢判断

代码

#include<stdio.h>
#include<math.h>
int main()
{
	int N,NA,NB;
	int i,j,k;
	int c=0,d=0; 
	int acount=0,bcount=0;
	scanf("%d %d %d",&N,&NA,&NB);
	int a[NA],b[NB]; 
	int A[N],B[N];
	for(i=0;i<NA;i++)//输入甲的周期顺序 
	{
		scanf("%d",&a[i]);
	}
	for(j=0;j<NB;j++)//输入乙的周期顺序 
	{
		scanf("%d",&b[j]);
	}
	i=0;
	j=0;
	while(c<N)//每一轮甲的顺序 
	{
		A[c]=a[i];
		c++;
		i++;
		if(i==NA)
		{
			i=0;
		}
	}
	while(d<N)//每一轮乙的顺序 
	{
		B[d]=b[j];
		d++;
		j++;
		if(j==NB)
		{
			j=0;
		}
	}
	for(k=0;k<N;k++)
	{
		switch(abs(A[k]-B[k]))//甲,乙比较 
		//0 表示"剪刀",1 表示"石头",2 表示"布",3 表示"蜥蜴人", 4 表示"斯波克" 
		{
			case 0:break;//平局
			case 1: if((A[k]==3&&B[k]==4)||A[k]>B[k])
					{
						if(A[k]==4&&B[k]==3)
						{
							bcount++;
						}
						else
						{
							acount++;
						}
					}
					else
					{
						bcount++;
					}
					break;
			case 2:if(A[k]<B[k])
					{
						acount++;
					}
					else
					{
						bcount++;
					}
					break;
			case 3:if((A[k]==0&&B[k]==3)||(A[k]==4&&B[k]==1))
					{
						acount++;
					}
					else
					{
						bcount++;
					}
					break;
			case 4:if(A[k]>B[k])
					{
						acount++;
					}
					else
					{
						bcount++;
					}
					break;
		}	
	}
	printf("%d %d\n",acount,bcount);
	return 0;
}

 运行结果

 

posted @ 2023-05-08 08:29  山远尽成云  阅读(129)  评论(0)    收藏  举报