回复 10楼 wp231957
对哦~我想到了我的是另外一个版本,1234四个数字的组合就告诉你那几个位置对了~看来这个版本8次真的不能一定猜出来
~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]

程序代码:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//只接受源数据为4位的整型
void split(int s,int buf[4])
{
for(int i=3;i>=0;i--)
{
buf[i]=s%10;
s/=10;
}
}
int main()
{
srand((unsigned int)time(0));
int s=0; //s 随机获取的谜底数字
int buf[4]={0}; //存放谜底的数组
int ipbuf[4]={0}; //存放用户猜测的数组
while(s<1000)
{
s=rand()%10000;
split(s,buf);
if(buf[0]==buf[1] || buf[0]==buf[2] || buf[0]==buf[3] || buf[1]==buf[2] || buf[1]==buf[3] || buf[2]==buf[3])
s=0;
}
int j=0; //猜测的次数
int t; //用户猜测的数据
int m=0; //记录数字正确且位置正确
int n=0; //记录数字正确且位置不正确
char* bit[4]={"千","百","十","个"};
while(j<8)
{
printf("\n请输入你猜测的数字 当前第%2d次猜测: \n",j+1);
scanf("%d",&t);
split(t,ipbuf);
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(i==j && buf[i]==ipbuf[j])
{
m++;
printf("%s位数 %d 正确 且位置正确\n",bit[i],buf[i]);
}
else
if(i!=j && buf[i]==ipbuf[j])
{
n++;
printf("数字 %d 正确 但位置不正确\n",buf[i]);
}
}
}
printf("\n%dA%dB\n",m,n);
if(m==4 && n==0)
{
printf("猜测正确\n");
break;
}
j++;
m=0;
n=0;
fflush(stdin);
}
if(j==8) printf("真笨啊 8次都没猜出来 告诉你谜底吧 %d\n",s);
return 0;
}
