C语言如何随机生成一个三个位且不重叠的十六进制数
SOS
SOS
SOS
三个位且不重叠是三位不重复的数吗?用随机函数生成3个0-15的不重复数就可以了。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int x = 0;
int i=0,dd[3],j=0,a,t;
srand((unsigned int)time(NULL));
for(i=0;i<3;i++)
{
while(1)
{
a = rand()%10;//生成0-9的整数
//判断是否已经存在
for(t=0;t<j;t++)
{
if(dd[t] == a)
break;
}
if(t==j)
{
dd[j++] = a;
x = x*10 + a;
break;
}
}
}
printf("%X",x);
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
int i=0,j,d,t=8;
char c;
char s[4] = {0};
char a[4] = {0};
srand(time(NULL));
for(i=0;i<3;i++)
{
d = rand()%16;
if(d<10)
c = d+48;
else
c = d+55;
for(j=0;j<i;j++)
if(s[i] == c)
break;
if(j==i)
s[i] = c;
else
i--;
}
while(t>0)
{
printf("第%d次猜:",9-t);
scanf("%s",a);
if(strcmp(a,s)==0)
break;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(a[j] == s[i])
{
if(i==j)
printf("数字%c位置正确数字正确\n",s[i]);
else
printf("数字%c位置不正确但数字正确\n",s[i]);
}
}
}
t--;
}
if(t==0)
printf("很遗憾,8次没猜对");
else
printf("恭喜第%d次猜对了",9-t);
return 0;
}