人机猜数游戏(用C语言写个程序)

人机猜数游戏
由计算机“想”一个四位数,请人猜这个四位数是多少。人输入四位数字后,
计算机首先判断这四位数字中有几个数字是猜对了,并且在猜对的数字中又有几
位位置也是对的,将结果显示出来,请人再猜,直到人猜出计算机所想的四位数
是多少时为止。游戏结束时,显示人猜一个数用了几次。
例如:计算机“想”了一个“1234”请人猜,可能的提示如下:
人猜的数 计算机判断有几个数字正确 有几个位置正确
1122 2 1
3344 2 1
3312 3 0
4123 4 0
1243 4 2
1234 4 4

完全搞不懂,不知道思路,拜托各种高手帮个忙,感激不尽,越详细越好,先谢谢了!好的追分!拜托拜托!
VCC+程序弄的,我也不懂,现在急需!也可以往邮箱[email protected]发信!

你好
具体的代码如下:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int Digit(int n,int m)//判断正确的数字的个数
{
int count=0;
int i,a[4];
for(i=0;i<4;i++)
{
a[i]=m%10;
m/=10;
}

while(n)
{
for(i=0;i<4;i++)
if((n%10)==a[i])
{
count++;
break;
}
n/=10;
}
return count;
}

int Position(int n,int m)//判断正确的位置的个数
{
int count=0;
int i,a[4];
for(i=0;i<4;i++)
{
a[i]=n%10;
n/=10;
}

i=0;
while(m)
{
if((m%10)==a[i])
count++;
i++;
m/=10;
}
return count;
}

int main()
{
srand((unsigned)time(NULL));
int n;//随机数
int time=0;//次数
int m;//猜的数
int a[1000][3];
int i,j;

n=rand()%(9999-1000+1)+1000;
while(1)
{
system("cls");
printf("请输入您猜的数:");
scanf("%d",&m);
system("pause");

a[time][0]=m;
a[time][1]=Digit(n,m);
a[time][2]=Position(n,m);

time++;
system("cls");
printf("\n您猜的数字 数字正确的个数 位置正确的个数\n");
if(Digit(n,m)==4&&Position(n,m)==4)
{
printf("%d\t\t%d\t\t%d\n",m,Digit(n,m),Position(n,m));
printf("恭喜你 猜正确了^_^\n"
"您一共猜了%d次^_^\n",time);
break;
}
for(i=0;i<time;i++)
printf("%d\t\t%d\t\t%d\n",a[i][0],a[i][1],a[i][2]);
system("pause");

}
system("pause");
return 0;
}

希望能帮助你哈^_^
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-26
计算机“想”数字哈,你就可以用个随机函数自动生成数值就好了。随机函数需要包括两个头文件 “time.h” “stdlib.h” 。
使用方法:  srand((unsigned)time(NULL)); /*随机种子*/
   n=rand()%(Y-X+1)+X; /*n为X~Y之间的随机数*/
然后你生成四次,并排列起来。 然后你输入一个四位数,让计算机分别把每位与你的数字比较,用一个数组记下你对的数字,并计数。 完成一次后,又循环,直到你猜数字与随机生成的一样。 这个时候,将统计的计数数据输出来。 很简单的,自己多多的去看去写。追问

我想要个完整的程序,能帮写下么?谢谢了!我是一点都不懂这东西,多看看也不懂吖!呜呜!

追答

呵呵 我现在也在忙哈 你看看数 按照这样的写发 很容易的

本回答被网友采纳
第2个回答  2012-09-27
代码已经发送至你的邮箱,有不懂的地方可以提出来。 因测试于虚拟机上,若代码无法正常显示,则可以记事本形式打开或call我,我再发一份给你。追问

代码无法显示额,都是乱码!

追答

已经发送,查收

本回答被提问者采纳
第3个回答  2012-09-27
这个我在excel中实现了,你要不要
第4个回答  2012-09-26
相似回答