私はこのコードを持っています:
#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のコードブロックを使用しました。