猜硬币的游戏:初始的时候,甲同学的左手握着一枚硬币,游戏开始后,甲同学进行有限次的真或者假的左右手交换,最后
由乙同学来猜测左手中是否有硬币。要求写程序实现该游戏过程。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void change1(int l,int r);
void change2(int *l,int *r);
void change3(int *l,int *r);
int main()
{
int a,i,j=0;
srand(time(NULL));
int l=1,r=0;
i=rand()%10+1;
j=i;
printf("交换次数%d\n",i);
while(i>0)
{
a=rand()%3+1;
switch(a)
{
case 1:printf("交换方法为chang1,交换次数为%d,交换前左手为%d右手为%d\n",j-i+1,l,r);
change1(l,r);
printf("交换后左手为%d右手为%d\n",l,r);break;
case 2:printf("交换方法为chang2,交换次数为%d,交换前左手为%d右手为%d\n",j-i+1,l,r);
change2(&l,&r);
printf("交换后左手为%d右手为%d\n",l,r);break;
case 3:printf("交换方法为chang3,交换次数为%d,交换前左手为%d右手为%d\n",j-i+1,l,r);
change3(&l,&r);
printf("交换后左手为%d右手为%d\n",l,r);break;
default:break;
}
i--;
}
return 0;
}
void change1(int l,int r)//假交换
{
int t;
t=l;
l=r;
r=t;
}
void change2(int *l,int *r)//假交换
{
int *t;
t=l;
l=r;
r=t;
}
void change3(int *l,int *r)//真交换
{
int t;
t=*l;
*l=*r;
*r=t;
}