其实这个程序很简单,思路很清晰
首先产生一个随机的四位数,且每位都不相同
int a[10]={0,1,2,3,4,5,6,7,8,9};
int b,c,i,t;
for(i=0;i<100;i++) //思路就是产生两个10以内的随机数,交换a中这两个下标的数值,
{ //经过多次交换后,着a中的这10个数就打乱了次序,就像是随机数了
b=rand()%10; //这个交换多少次,随便了,只要打乱就可以
c=rand()%10;
if(b!=c)
{t=a[b];a[b]=a[c];a[c]=t;}
}
接着取出连续的a中的4个数,这样就是那个随机数
int suiji[4];
for(i=0;i<4;i++)
suiji[i]=a[i]; //这样随即中就是四个要猜的数,
要是想要第一位不是0,可以这么计算
int j;
for(i=0,j=0;j<4;i++)
{
if(a[0]==0)
continue;
suiji[j++]=a[i];
}
接下来就是输入数据,
int shuru,shr[4],s;
while(1)
{
scanf("%d",&shuru);
s=shuru;
i=3;
while(s)
{
shr[i--]=s%10;
s/=10;
}
if(shuru>1000&&shuru<9999&&shr[0]!=shr[1]&&shr[0]!=shr[1]&&shr[0]!=shr[2]&&shr[0]!=shr[3]&&shr[1]!=shr[2]&&shr[1]!=shr[3]&&shr[2]!=shr[3])
//shuru在1000~9999之间并且各各位不相等,就跳出,否则继续输入
break;
else
printf("Error");
}
接着这个输入的数据和这个随机数的比较了,其实很简单
m是位置和数字都对的。n是数字对,但位置不对的
int m=0,n=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(shr[i]==suiji[j])
n++;
for(i=0;i<4;i++)
if(shr[i]==suiji[i])
m++;
n-=m;
接着是打印输入的数和mn(这个就是判断的结果)这个我就不用再写了吧
清屏用system("cls");
最后是总装,先产生四位的随机数,接着用一个大循环把输入和比较还有打印判断结果包含进去。
退出这个循环的条件有两个,一个是m=4,一个是到了规定的次数
免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报
举报