求组成的最大数,程序无效内存引用
问题:任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 输入:自然数 n
输出:各位数字组成的最大数
程序:
#include <stdio.h>
#include <math.h>
void p(int a[]);
int main(void)
{
int m,i,s=0,n,a[100]={0},b,c;
scanf("%d",&m);
for(i=1;i<100;i++)if(m<pow(10,i)){n=i;break;}//判断位数
for(i=0;i<n;i++){c=pow(10,(i+1));b=m%c;a[i]=b/pow(10,i);}//取出每个数字
p(a);//for(i=0;i<n;i++)printf("%d",a[i]);
for(i=0;i<n+1;i++)s=s+pow(10,(n-i-1))*a[i];
printf("%d\n",s);
return 0;
}
void p(int a[])//排序
{ int i,j;char temp;
for(i=0;i<100;i++)
{
for(j=0;j<100-i;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
Dev c++可以编译运行,但其他编译器显示无效内存引用,大家帮忙看一下我的程序哪儿有问题啊?