任意输入一个自然数(不大于99999999),输出该自然数的各位数字组成的最大数。输入 1593 ,则输出为 9531

#include <stdio.h>
#include <stdlib.h>
main()
{int n,a[8],b[8],i,j,num=0,t,s=0,m=1;
scanf("%d",&n);
for(i=0;i<=7;i++)
{a[i]=n%10;
num++;
n/=10;
if(n==0) break;
}
for(i=0;i<=num-2;i++)
{for(j=i+1;j<=num-1;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
for(i=0;i<=num-1;i++)
{for(j=0;j<=num-i-2;j++) m=m*10;
s=s+a[i]*m;
}
printf("%d",s);
system("PAUSE");return 0;
}

我用{for(j=0;j<=num-i-2;j++) m=m*10;
s=s+a[i]*m;
}
代替s=s+a[i]*pow(10,num-i-1);但输出错误,请问是哪儿出错了?

你的m只在第1次循环的时候初值是1,第2次循环的时候,是在原来的结果上又乘了若干个10
j=0改为j=0,m=1试试。
或者
for(i=0;i<=num-1;i++)
{for(j=0;j<=num-i-2;j++) m=m*10;
s=s+a[i]*m;
}
改成
for(i=num-1, m=1;i>=0;i--)
{
s=s+a[i]*m;
m=m*10;
}
其中m=1是前面赋过值的,不过这种临时使用的变量还是什么时候用什么时候赋值好些,检查起来容易。
温馨提示:内容为网友见解,仅供参考
无其他回答

...输出该自然数的各位数字组成的最大数。输入 1593 ,则输出为 9531...
你的m只在第1次循环的时候初值是1,第2次循环的时候,是在原来的结果上又乘了若干个10 j=0改为j=0,m=1试试。或者 for(i=0;i<=num-1;i++){for(j=0;j<=num-i-2;j++) m=m*10;s=s+a[i]*m;} 改成 for(i=num-1, m=1;i>=0;i--){ s=s+a[i]*m;m=m*10;} ...

输入一n位数,范围在1~99999999,求这个n位数每一位上的数只和
include <stdio.h>int main(){ long int x,sum=0,n; printf("请输入一个自然数:\\n"); scanf("%d",&x); n=x; \/\/存储x的值 while(n) { sum+=n%10; \/\/通过循环将数字n的每一位都剥离下来,并存储到sum中 n\/=10; } printf("%d的各位数字和为%d...

最大的自然数是99999999.对.错
错,是999999999

最大的自然数是99999999
最大的自然数是99999999说法错误。最大的自然数是99999999说法错误;因为没有最大的自然数。自然数是指用以计量事物的件数或表示事物次序的数。即用数码0,1,2,3,4……所表示的数。自然数由0开始,一个接一个,组成一个无穷的集体。自然数有有序性,无限性。分为偶数和奇数,合数和质数等。相...

与99999999相临的两个自然数的差是多少
与99999999相临的两个自然数的差是多少?与99999999相临的两个自然数的差分别是100000000和99999998,这两个数的差是2.与任何一个自然数(0除外)相临的两个自然数的差都是2.

最小的自然数是什么?最大的八位数是什么?
0;99999999。

最大的四位数是99999999,它比最小的五位数小小1.
最大的四位数是99999999,它比最小的五位数小小1.答案 解析 根据整数的意义可知最大的四位数是每一位都是最大的数字9,最小的五位数是每一位都是最小的自然数0,但是最高位不能是零,所以零不能放在最高位,最高位应当是1,据出可解决.解答:解:1、0000-9999=1,所以最大的四位数是 ...

一个自然数,各个数位上的数字之和是74。这个自然数最少是多少?
最小是:299999999 简介:非负整数, 即用数码0,1,2,3,4,5,……所表示的数,也就是除负整数外的所有整数,通常也被称为自然数。定义:非负整数,(教科书上的概念)是正整数和零。也就是除了负整数外的所有整数。概念:非负整数即非负的整数,而不是什么非"负整数",非负是定语,整数是...

比最小的九位数少一的数是几
比最小的九位数少一的数是99999999 位数介绍:一个自然数数位的个数,叫做位数。含有一个数位的数是一位数,含有两个数位的数是两位数,含有三个数位的数是三位数……含有n个数位的数是n位数。一个自然数数位的个数,叫做位数.含有一个数位的数是一位数,含有两个数位的数是两位数最大的一位数是9,...

在自然数中最大的八位数小于最小的九位数
在自然数中最大的八位数小于最小的九位数 最大的八位数: 99999999 最小的九位数:100000000 正确!

相似回答