0
点赞
收藏
分享

微信扫一扫

猜硬币问题

干自闭 2022-01-25 阅读 57

猜硬币的游戏:初始的时候,甲同学的左手握着一枚硬币,游戏开始后,甲同学进行有限次的真或者假的左右手交换,最后
由乙同学来猜测左手中是否有硬币。要求写程序实现该游戏过程。

#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;
}

 

举报

相关推荐

硬币问题

翻硬币问题

(算法)硬币问题

Python:投硬币问题

最少的硬币数目问题

C语言猜凶手问题

找凶手和猜名次问题

0 条评论