C语言问题~~请高手回答 请尽量详细点。

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:57:12
C语言中
输入一个整数,判断它位数,并重新组合成相同位数的最大值?如输入:1345
输出:5431。

#include<stdio.h>
main()
{
long int i,new=0;
int k=0,j,l,str[10],max,temp;
printf("input number\n");
scanf("%ld",&i);
while(i>0)
{
str[k++]=i%10;/*求出第位数存入数组*/
i/=10;
}

for(j=0;j<k;j++)
{
max=j;
for(l=j+1;l<k;l++)
if(str[max]<str[l])max=l;/*排序*/
temp=str[max];
str[max]=str[j];
str[j]=temp;
if(j!=k-1)new=(new+str[j])*10;
else new=new+str[j];/*个位不用再*10*/
}
printf("%ld",new);
}

当字符串输入,再排序,输出

可定义一个数组,长度适当大一点,如:int a[20]
把整数的每一位化为数组中的一个元素.对数组a进行排降序,再输出即可.
这样子做,可以对超过长整型的整数也可以通用.