关于#c语言#的问题,请各位专家解答!

img

#include
#include
int opposite(int n)
{
    int m=(int)ceil(log(n)),sum=0;
    for(int i=m-1;i>=0;i--)
    {
        sum=n%10*pow(10,i)+sum;
        n=n/10;
    }
    return sum;
}
int main()
{
    int bottle,d;
    scanf("%d\n",&d);
while(d--)
{
    int a[50]={0},k=0,m,n;
    scanf("%d%d",&m,&n);
    for(int i=m;i<=n-m;i++)
    {
        a[k]=opposite(i);
        k++;
    }
    while(1)
    {
    int sum=0;
    for(int j=1;jif(a[k]-1])
        {
            bottle=a[k];
            a[k]=a[k-1];
            a[k-1]=bottle;
            sum++;
        }
    }
    if(sum==0)
    break;
    }
    for(int i=0;iprintf("%d ",a[i]);
    }
    printf("\n");
}
    return 0;
}

运行之后没有结果,个人认为可能是输出的语句不太正确,但看不出来是哪里不对

//什么东西啊,随便就采纳了???
//看看我写的,有点长,有好的意见望提出!

img

img

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

int intcmp(const void *x, const void *y)
{
    int a = *(int *)x, b = *(int *)y;
    return a > b ? 1 : (a == b ? 0 : -1);
}

void mad(int *a0, int *a, int n)
{
    int x, b, bi;
    for (int i = 0; i < n; i++)
    {
        x = *(a0 + i);
        bi = x;
        if ((x % 10) == 0)
        {
            bi = x;
            while ((x % 10) == 0)
            {
                x /= 10;
            }
        }
        b = x;
        for (int j = 0; j < n; j++)
        {
            if (a[j] == b)
            {
                a[j] = bi;
                break;
            }
        }
    }
}

int made(int *arr, int n)
{
    int a, j = 0;
    char buf[8] = {'\0'};
    for (int i = 0; i < n; i++)
    {
        a = *(arr + i);
        while (a)
        {
            sprintf(&buf[j++], "%d", a % 10);
            a /= 10;
        }
        buf[j] = '\0';
        sscanf(buf, "%d", &arr[i]);
        memset(buf, '\0', 8);
        j = 0;
    }

    return 0;
}

int main()
{
    int n = 0;

    //输入数据组数
    do
    {
        scanf("%d", &n);
    } while (n < 2 || n > 5);

    int a[n][2], arr[n][51], arr0[n][51];

    //输入每组数据范围
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }

    //赋初始值
    for (int i = 0; i < n; i++)
    {
        int k = a[i][1] - a[i][0];
        int z = a[i][0];
        for (int j = 0; j <= k; j++)
        {
            arr[i][j] = z + j;
            arr0[i][j] = arr[i][j];
        }
    }

//处理
    for (int i = 0; i < n; i++)
    {
        made(arr[i], a[i][1] - a[i][0] + 1);
    }

    //排序
    for (int i = 0; i < n; i++)
    {
        qsort(arr[i], a[i][1] - a[i][0] + 1, sizeof(int), intcmp);

        made(arr[i], a[i][1] - a[i][0] + 1);
    }

    for (int i = 0; i < n; i++)
    {
        mad(arr0[i], arr[i], a[i][1] - a[i][0] + 1);
    }

//输出
    for (int i = 0; i < n; i++)
    {
        int k = a[i][1] - a[i][0];
        for (int j = 0; j <= k; j++)
        {
            printf("%d ", arr[i][j]);
        }
        puts("\n");
    }

    return 0;
}