回复 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; }