#include <stdio.h>
int main(){
int a[20];
int n,i,j,k=0,temp,newn=0;
printf("请输入一个正整数n");
scanf("%d",&n);
while(n>0){
a[k]=n%10;
n=n/10;
k++;
}
for(i=0;i<k-1;i++){
for(j=0;j<k-1;j++){
if(a[j]<a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<k;i++)
newn=newn*10+a[i];
printf("%d",newn);
return 0;
}
为什么我用编译器尝试一个15位的数输出来的结果就不对,而1-8位的数字输出来的结果就正确。
15位的数已经超出 int 型所能表示的范围了,溢出。
是不是超范围了,用long int试下呢