D拼数


    #include<stdlib.h>
    int compare(const void*a,const void*b)
    {
    int *x=(int*)a;
    int *y=(int*)b;
    return *y-*x;//降序
    }
    int main()
    {
    int n,arr[20],a[20],b[20],c[1000000];//第一个数,排序好的
    int i=0,digit=0;//总位数
    
    scanf("%d",&n);
    while(n--){
        scanf("%d",&arr[i++]);
    }
    for(int j=0;j<=i;j++)
    {
        a[j]=arr[j];//arr[]原封不动
        while(a[j]){
            a[j]/=10;
            digit++;
        }
        b[j]=a[j];   
    }
   //排序函数,b[j],开头
    int m=sizeof(a)/sizeof(a[0]);
    qsort(b,m,sizeof(int),compare);

按第一个数字排序〤
怎么靠排序好的b[j]把a[i]输出来?
  

    
       
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int compare(const void *a, const void *b)
    {
    char str1[40], str2[40]; // 1:a在前,b在后
    sprintf(str1, "%d%d", *(int *)a, *(int *)b);   // 2:b前a后
    sprintf(str2, "%d%d", *(int *)b, *(int *)a);
    return strcmp(str2, str1);
    }

    int main() 
    {
    int n, arr[20];
    int count = 0;  // 数字个数
    scanf("%d", &n);
    for (int i = 0; i < n; i++) 
        scanf("%d", &arr[count++]);
    qsort(arr, count, sizeof(int), compare);
    for (int i = 0; i < count; i++) 
        printf("%d", arr[i]);
    
    printf("\n");


◮:
posted @ 2025-09-17 23:08  ervgiu28hg34y827  阅读(7)  评论(0)    收藏  举报