程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//只接受源数据为4位的整型
void split(int s,int buf[4])
{
buf[3]=s % 10 ;
s/=10;
buf[2]=s % 10 ;
s/=10;
buf[1]=s % 10 ;
s/=10;
buf[0]=s;
}
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; //记录数字正确且位置不正确
while(j<8)
{
printf("\n请输入你猜测的数字 当前第%2d次猜测: \n",j+1);
scanf("%d",&t);
split(t,ipbuf);
if(buf[0]==ipbuf[0]) m++; else if(buf[0]==ipbuf[1] || buf[0]==ipbuf[2] || buf[0]==ipbuf[3]) n++;
if(buf[1]==ipbuf[1]) m++; else if(buf[1]==ipbuf[0] || buf[1]==ipbuf[2] || buf[1]==ipbuf[3]) n++;
if(buf[2]==ipbuf[2]) m++; else if(buf[2]==ipbuf[1] || buf[2]==ipbuf[0] || buf[2]==ipbuf[3]) n++;
if(buf[3]==ipbuf[3]) m++; else if(buf[3]==ipbuf[1] || buf[3]==ipbuf[2] || buf[3]==ipbuf[0]) n++;
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;
}
[此贴子已经被作者于2017-3-2 15:44编辑过]