C语言中随机数不重复问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:59:30
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main() {
int a[5];
int j, i, t;
printf("您所选择的是32选5的机选模式!\n");
printf("您所选择的机选数为:");
srand((unsigned)time(NULL));
for(j = 0; j < 5; j++) {
a[j] = rand() % 32 + 1;
}
for(j = 0; j < 5; j++) {
for(i = j + 1; i < 5; i++) {
if(a[j] > a[i]) {
t = a[j];
a[j] = a[i];
a[i] = t;
}
}
printf("%d ", a[j]);
}
printf("\n");
}
如何使之产生不重复的5位数??????
请把不重复的条件语句说明以下
不用goto语句来写

关键部分改为:

srand((unsigned)time(NULL));

j=0;
while (j<5)
{
a[j] = rand() % 32 + 1;
for(i=0;i<j;i++){if(a[i]==a[j]) continue; }
j++;
}

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main() {
int a[5];
int j, i, t;
printf("您所选择的是32选5的机选模式!\n");
printf("您所选择的机选数为:");
srand((unsigned)time(NULL));
for(j = 0; j < 5; j++) {

a:a[j] = rand() % 32 + 1;
for(i=0;i<j;i++){if(a[i]==a[j])goto a;}
printf("\n");

printf("%d ", a[j]);

printf("\n");
}

}