C语言用rand函数随机产生50个10~99的互不相同的随机整数?

求大佬帮我看看哪里有问题
#include <stdio.h>
#include <stdlib.h>
int main()
{int a[49],b[49],i,j;
a[0]=rand()%90+10;
b[0]=a[0];
for(i=1;i<=49;i++)
{a[i]= rand()%90+10;
for(j=0;j<=i-1;j++)
{ while(a[i]=b[j])
a[i]= rand()%90+10;
b[i]=a[i];
}
}
for(i=0;i<=49;i++)
{
printf("%d ",b[i]);
if((i+1)%10==0)
printf("\n");
}
}

第1个回答  2019-10-31
我改了一下程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define Yes 1
#define No 0

int a[49];

int InArray(int t,int index)
{
int i,result=No;
for (i=0;i<=index;i++)
if (a[i]==t)
{ result=Yes;
break;
}
return result;
}

int main()
{ int b,i,j;
srand((unsigned)time(NULL));
a[0]=rand()%90+10;
//b[0]=a[0];
for(i=1;i<=49;i++)
{
Here: b = rand()%90+10;
if (InArray(b,i-1)==Yes)
goto Here;
else
{
/* code */
a[i]=b;
}
}
for(i=0;i<=49;i++)
{ printf("%-3d",a[i]);
if((i+1)%10==0)
printf("\n");
}
}

运行结果:第一次

37 96 28 48 33 60 66 39 87 51
84 50 97 57 25 32 26 34 42 43
47 46 70 55 53 67 15 73 21 49
83 79 71 82 17 80 64 44 12 31
74 20 23 63 81 30 16 27 90 93

第二次
77 61 37 40 72 60 27 14 36 85
25 12 23 65 24 16 97 39 98 89
33 75 67 68 29 73 53 19 70 82
22 94 58 91 46 76 31 78 50 86
92 56 84 35 69 54 63 51 62 44
第2个回答  2019-10-31

第3个回答  2019-10-31
while (a[i] == b[j])
=是赋值,==才是判等追问

还是会出现重复的情况

本回答被提问者和网友采纳
第4个回答  2020-01-07
初学者 经常把表示相等条件的== 只用一个=
一个= 其实 是 赋值
相似回答