私はこのコードを持っています:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int i,j;
long int maxc=0,nn;
long int max(long int n)
{
    maxc=0;nn=n;i=1;
    if(n<10 && n>=0) 
        return n;
    while(nn!=0)
    {
        if(maxc<nn%10) 
        { 
            maxc=nn%10;
            j=i;
        }
        i++;
        nn/=10;
    }
    return maxc*(pow(10,i-2))+max(n/(pow(10,j))*(pow(10,j-1))+n%((int)pow(10,j-1)));
}
int main()
{
    long int n;
    printf("Dati n: ");
    scanf("%d",&n);
    printf("%ld",max(n));
    return 0;
}
n= ユーザーが指定した数値 max= n の数字で構成される最大数を返す関数。例: n=1234 の場合、max は 4321 を返し、n=26341 の場合、max は 64321 を返す必要があります。
問題は、コンパイラが機能することがあることです。つまり、ある数値に対しては、期待する値が返されることもありますが、返されないこともあります。通常は同じ桁数を返しますが、(a) digit/s を 9 または 4 に置き換えます... この問題を解決するルールを取得できません。
ありがとうございました !ubuntuのコードブロックを使用しました。