#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int pdcf(int a[4])/*判断数字是否重复*/
{int i,d;
for(i=1;i<3;i++)
{ if (a[0]==a[i])
{d=1;printf("有数字重复\n");break;}
if (a[1]==a[1+i])
{d=1;printf("有数字重复\n");break;}
if (a[2]==a[3])
{d=1;printf("有数字重复\n");break;}
else d=0;}
return d;}
void main()
/*猜数字*/
{int s[10]={0,1,2,3,4,5,6,7,8,9};
int c1,c2,c3,c4,c5,c6,i,j,sum,d=1,d1=1;
int m=0,b,q,md=0,t=0,c=1,num[4],a[4];
srand(time(0));/*设置随机数种子为当前时间*/
for (i=0;i<1982;i++)/*这里是人为设置的循环数,目的是打乱s[10],其实是伪随机*/
{j=rand()%8;
b=s[j];
s[j]=s[j+1];
s[j+1]=b;}
for(i=0;i<4;i++)
{ num[i]=s[i] ;printf("%d",num[i]);}/*这里也可以去掉printf语句,我写在这里是为了自己知道出了什么数*/
/*此时num[4]中为随机数*/
while(c){
while(d==1)
{ printf("请输入四位数用回车结束\n");
scanf("%d",&sum);
a[0]=sum/1000%10;
a[1]=sum/100%10;
a[2]=sum/10%10;
a[3]=sum%10;
d=pdcf(a);
}
d=1;
int k=0,t=0,tw=0,i;
for(i=0;i<4;i++)
for(k=0;k<4;k++)
if (a[k]==num[i])
if(k!=i) tw=tw+1;
else t=t+1;
if (t==4) {printf("全对,真棒\n");break;}
printf("有%d个数位置正确,但是有%d个数位置不对\n",t,tw);
}
sleep(10000);
return 0;
}
/*问题1,还没有设置边界判断,如果输入三位数,那么会自动在前面+上0,这个怎么判断
问题2,前后两次的重复判断都有问题,这一个星期都在这上面折腾了*/
|