我有这个代码:
#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 的数字组成。EG:对于 n=1234.max 应该返回 4321,对于 n=26341,max 应该返回 64321
问题是有时编译器可以工作,我的意思是对于某些数字,它返回我期望的值,但有时不是。通常返回相同的位数,但将 (a) digit/s 替换为 9 或 4...我无法找到解决此问题的规则。
谢谢 !我为 ubuntu 使用了代码块。