用随机数生成4位数,判断是否有重复数字,有则重新生成
将用户输入4位数逐个与随机数比较,如果在随机数中,则判断位置是否相同,相同则记为A,不同则记为B,最后统计A,B的数量。
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int check(int n)
{
int a[10] = {0};
int i=0;
if(n<123 || n>9876)
return 0;
for(i=0;i<4;i++)
{
a[n%10]++;
n = n/10;
}
for(i=0;i<10;i++)
if(a[i] > 1)
return 0;
return 1;
}
int getData()
{
int n = rand()%9754+123;
while(1)
{
if(check(n) == 1)
break;
else
n = rand()%9754+123;
}
return n;
}
void int2char(int n,char r[4])
{
for(int i=0;i<4;i++)
{
r[i] = n%10;
n = n/10;
}
}
int main()
{
int n,m,num,i,j;
char a[4] = {0},b[4] = {0};
int nA = 0,nB = 0;
srand(time(NULL));
num=1;
n = getData();
while(1)
{
nA = nB = 0;
printf("请输入不重复的四位数: ");
scanf("%d",&m);
if(check(m) == 0)
{
printf("数字不对,重新输入。\n");
continue;
}
if(n==m)
{
printf("BINGO! You use %d times!",num);
break;
}
int2char(n,a);
int2char(m,b);
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(a[i] == b[j])
{
if(i==j)
nA++;
else
nB++;
}
}
}
printf("%dA%dB\n",nA,nB);
}
return 0;
}