智力游戏-人机猜数游戏2

 请人想一个四位的整数,计算机来猜,人给计算机提示信息,最终看计算机用几次猜数一个人“想”的数,请编程实现。

1.问题分析与算法解决

 解决这类问题时,计算机的思考过程不可能像人一样具备较完备的推理能力,关键在于要将推理和判断的过程变成一种机械的过程,找出相应的规则,否则计算机难于完成推理工作。

 基于对问题的分析和理解,将问题进行简化,分解分为两步完成:首先确定四位数字的组成,然后再确定四位数字的排列顺序。可以列出如下规则:

 a.分别显示四个1,四个2,…四个0,确定四位数字的组成。

 b.依次产生四位数字的全部排列(依次两两交换全部数字的位置)。

 c.根据人输入的正确数字及正确位置的数目,进行分别处理:

 注意此时不出现输入3的情况,因为在四个数字已经确定的情况下,若有3个位置正确,则第四个数字的位置必然是正确的。

 若输入4:游戏结束。

 判断本次输入与上次输入的差值。

 若差为2:说明前一次输入的一定为0,本次输入的为2,本次交换的两个数字的位置是正确的,只要交换两外两个没有交换过的数字即可结束游戏。

 若差为-2:说明前一次输入的一定为2,本次输入的一定为0。说明刚交换的两个数字的位置是错误的,只要将刚交换的两个数字位置还原,并交换另外两个没有交换过的数字即可结束游戏。

 否则:若本次输入的正确位置数<=上次输入的正确位置数

 则恢复上次四位数字的排列,控制转c。

 否则:将本次输入的正确位置数作为“上次输入的正确位置数”,控制转c.

2.程序与程序注释

#include <stdio.h>

 

int a[4],flag,count;

 

void prt();

void bhdy(int s,int b);

 

void main()

{

 int b1,b2,i,j,k=0,p,c;

 

 printf("Game Begin\n");

 printf("Now guess your number in mind is # # # #.\n");

 

 for(i=1;i<10&&k<4;i++) //分别显示四个1到9确定四个数字的组成

 {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值