我有这样的代码:C:什么我不明白
#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 =用户 最大给予NUMER =函数返回的最大数量由n个位数。 E.G:对于n = 1234.max应该返回4321,对于n = 26341,最大应该返回64321
问题是,有时编译器工作,我的意思是某些数字它返回我期望的值,但有时不。通常会返回相同的数字位数,但用9或4替换(a)数字/秒...我无法获得解决此问题的规则。
谢谢!我用Ubuntu的代码块。
你有没有调试? –
对于什么'n'它是错的? – deepmax
你应该使用'fscanf'而不是'scanf'(= – dcow