猜宝游戏
1.案例描述
课间,甲和乙玩猜硬币的游戏:初始时,甲的左手握着一枚硬币,游戏开始后,甲进行有限次或真或假的交换,最后由乙来猜测这两只手中是否有硬币。要求编程,实现游戏过程。
2.案例设计
1.定义一个整形的数表示硬币,当硬币为1的时候表示在左手,为零的时候表示在右手
2.定义两个函数,一个是真交换,即硬币为1改为0,是0则改为一,一个假的交换,什么都不做。
3.生成两个随机数0和1,当随机数为1的时候真交换,为零的时候假交换
4.经过指定的交换次数后输出结果
3.代码实现
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
//猜宝游戏 用1表示左手,用0表示右手
void true_exchange(int *p);
void false_exchange(int *p);
//刷新随机数种子
srand((unsigned)time(NULL));
//输入 变换次数
int coin,times,flag,guess;
printf("请输入交换次数:");
scanf("%d",×);
//开始交换
for(int i=0;i<times;i++)
if(flag = rand()%2)//随机数为1的时候交换
true_exchange(&coin);
else//随机数为0,假装交换
false_exchange(&coin);
//玩家猜一个数
guess = rand()%2;
printf("玩家猜是%d!\n",guess);
//判断并输出结果
if(guess==coin)
printf("恭喜你猜对了\n");
else
printf("很遗憾猜错了!");
return 0;
}
void true_exchange(int *p){//交换硬币在哪边
if(*p==0)
*p=1;
else
*p=0;
printf("硬币交换,交换后为%d\n",*p);
}
void false_exchange(int *p){
printf("硬币没有交换,此时为为%d\n",*p);
}