C语言(这个要用数组吧,那个第几个数要定义个变量记录下标?)

由1,2,3,4,5组成的五位数(数字不重复),共有120个,由小到大排列,12345是第一个,54321是最后一个,问第32个数是几

你可以参考一下,希望采纳

#include<stdio.h>
int main()
{
    int num = 0, i;
    int a[5] = {1,2,3,4,5};//个位
    int b[5] = {1,2,3,4,5};//十位
    int c[5] = {1,2,3,4,5};//百位
    int d[5] = {1,2,3,4,5};//千位
    int e[5] = {1,2,3,4,5};//万位
    
    int ans[121];//用来保存生成的数
    int a1,b1,c1,d1,e1;
    for(e1 = 0;e1 < 5;e1++)
    {
        for(d1 = 0;d1< 5;d1++)
        {
            for(c1 = 0;c1 < 5;c1++)
            {
                for(b1 = 0;b1 < 5;b1++)
                {
                    for(a1 = 0;a1 < 5;a1++)
                    {
                        if(a[a1]!=b[b1] && a[a1]!=c[c1] && a[a1]!=d[d1] && a[a1]!=e[e1] && b[b1]!=c[c1] && b[b1]!=d[d1] && b[b1]!=e[e1] && c[c1]!=d[d1] && c[c1]!=e[e1] && d[d1]!=e[e1])
                        //每一位不能重复
                        {
                            num = e[e1]*10000+d[d1]*1000+c[c1]*100+b[b1]*10+a[a1];
                            ans[i] = num;
                            i++;
                        }
                    }
                }
            }
        }
    }
    
    //从小到大排序
    int j,temp = 0;
    for(i = 0;i < 120;i++)
    {
      for(j = i + 1;j < 120;j++)
      {
        if(ans[i] > ans[j])
        {
          temp = ans[i];
          ans[i] = ans[j];
          ans[j] = temp;
        }
      }
    }
    
    printf("第32个数是: ",ans[31]);
    
    return 0;
}

32: 2-3-1-5-4

直接从12345到54321遍历,如果值是12345的组合且五个值各不相同,就保存该值