把程序得到的几个数按照首数字大小顺序输出
我通过一段代码得出了50000内的阶乘数,至于什么事阶乘数不懂没关系,问题是我得出的数(1 2 145 40585)如何按照字典序即1打头的在前,2打头的在后输出(1 145 2 40585),谁来帮我改下代码?#include<stdio.h>
int main()
{
extern int fx(int x);
int n, a, b, c, d, e, sum;
for(n = 1; n <= 50000; n++)
{
a = n / 10000;
b = n / 1000 % 10;
c = n / 100 % 100 % 10;
d = n / 10 % 1000 % 100 % 10;
e = n % 10000 % 1000 % 100 % 10;
if( n < 10 )
sum=fx(e);
else if( n < 100 && n >= 10 )
sum=fx(d)+fx(e);
else if( n >= 100 && n < 1000 )
sum=fx(c)+fx(d)+fx(e);
else if( n >= 1000 && n <10000 )
sum=fx(b)+fx(c)+fx(d)+fx(e);
if( n >= 10000 )
sum=fx(a)+fx(b)+fx(c)+fx(d)+fx(e);
if( sum == n )
{
//printf("%d->",n);
//printf("%d,%d,%d,%d,%d ",a,b,c,d,e);
//printf("sum=%d\n",sum);
printf("%d ",n);
}
}
return 0;
}
int fx(int x)
{
int i, sum=1;
if(x==0)
return 1;
else
{
for(i=1;i<=x;i++)
sum=i*sum;
return sum;
}
}