询问如何生成一个五位数且各个数字不相同的代码

我只能写出来随机生成五位数但是不能保证各个数字不相同,请问应该如何修改. ret=rand()%89999+10000


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
 int ret = 0;
 int i = 0;
 int rnd = 0;
 int cnt=0;
 int a,b,c,d,e;
 srand((unsigned int)time(NULL));
 do{
  ret = rand()%89999+10000;
  a = ret /10000;
  b = ret /1000%10;
  c = ret /100%10;
  d = ret /10%10;
  e = ret %10;
  if(a != b && b != c && c!=d && d!=e)
   break;
 }while(1);
 printf("%d",ret);
 printf("Ganestart!\n");
 while(1)
 {
 printf("请输入一个数:");
 scanf("%d",&rnd);
 cnt++;
 if(rnd>ret){
 printf("太大了! \n");
 }else if(rnd<ret){
 printf("太小了! \n");
 }else{
 printf("炸弹爆炸,嘭! \n");
 break;
 }
 }
 printf("共猜了%d次",cnt);
 return 0;
}

生成每个数字时与已有数字比较一下就行了,有相同的话就重新生成

没有直接的方法生成,但是这个方法虽然麻烦但是通俗易懂,执行效率中等,封装到方法里就可以随意调用了

int num = 0,n1,n2,n3,n4,n5;

    n1=rand() % 10;
    n2 = rand() % 10;
    while (n1==n2)
    {
        n2 = rand() % 10;
    }
    
    n3 = rand() % 10;
    while (n2==n3||n1==n3)
    {
        n3 = rand() % 10;
    }

    n4 = rand() % 10;
    while ( n3 == n4||n1==n4||n2==n4)
    {
        n4 = rand() % 10;
    }

    n5 = rand() % 10;
    while (n4==n5 || n1 == n5 || n2 == n5 || n3 == n5)
    {
        n5 = rand() % 10;
    }

    num = n1 * 10000 + n2 * 1000 + n3 * 100 + n4 * 10 + n5;

    printf("随机数num=%d", num);

有帮助的话可以点个采纳吗

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

int main()
{
    //随机数种子
    srand((unsigned int)time(NULL));
    int number = 0;
    int i = 0;
    //创建一个数组,保存0---9
    int arrRet[10]={0,1,2,3,4,5,6,7,8,9};
    int length=10;
    while(i < 5){
        int digit = rand()%length;
        number=number*10+arrRet[digit];
        //调整数组
        for(int j = digit;j < length-1;j++){
            arrRet[j]=arrRet[j+1];
        }
        length--;
        i++;
    }
    //打印数字
    printf("随机生成数字:%d\n",number);
 
    //猜数字
    int retNumber;
    int count = 0;
    while(1){
        printf("请输入你猜的数字:\n");
        scanf("%d",&retNumber);
        count++;
        if(retNumber==number){
            printf("炸弹爆炸,嘭!\n");
            break;
        }else if(retNumber>number){
            printf("你猜的数大了\n");
        }else{
            printf("你猜的数小了\n");
        }
    }
   printf("次数:%d\n",count);
    
    
    return 0;
}