| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1953 人关注过本帖
标题:[求助]求各位数字组成的最大数
只看楼主 加入收藏
science
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-22
收藏
 问题点数:0 回复次数:18 
[求助]求各位数字组成的最大数

任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。

输入: 自然数 n

输出: 各位数字组成的最大数

希望可以赐教!不胜感激!

搜索更多相关主题的帖子: 大数 数字 
2007-05-14 18:11
lg19880220
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-13
收藏
得分:0 
不会,等答案
2007-05-14 18:31
science
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-22
收藏
得分:0 
肯定有会的,大家帮一下阿!

2007-05-14 18:33
marshhj
Rank: 1
等 级:新手上路
帖 子:40
专家分:3
注 册:2007-4-27
收藏
得分:0 

或许你可以先选出几个数字,再排序。。。然后组成新数字输出。

2007-05-14 18:37
science
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-22
收藏
得分:0 
怎么做呢?
不会阿!

2007-05-14 18:52
YOGIOH
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2007-5-8
收藏
得分:0 
回复:(science)[求助]求各位数字组成的最大数

#include<stdio.h>
#include<math.h>
#include<conio.h>
#define N 10
void main()
{
int i=0,j,k;
unsigned long n,a[100],x,t;
printf("input n:");
scanf("%lu",&n);

do
{
if(i!=0)a[i-1]=x;
i=i+1;
x=(n%(long)(pow(10,i)))/(long)(pow(10,i-1));
if(x==0&&(n%(long)(pow(10,i+1)))/(long)(pow(10,i))==0)break;
}while(x<10&&x>=0);

for(j=0;j<i;j++)
{
for(k=j+1;k<i;k++)
{
if(a[j]<a[k])
{
t=a[k];
a[k]=a[j];
a[j]=t;

}
}
}


for(j=0;j<i-1;j++)
printf("%lu",a[j]);
getch();
}


想法就是求余再除掉多余位数
全部放进数组排序

[此贴子已经被作者于2007-5-14 21:09:10编辑过]


2007-05-14 21:06
lg19880220
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-13
收藏
得分:0 

/* 标准文档模板 */

#include "Stdio.h"
#include "Conio.h"

int main(void)
{int a,b,c,d,e,f,t;
scanf("%d",&a);
if (a<10000)
{b=a;
if (b/1000>=1) c=b/1000;
if (b/100%10>=1) d=b/100%10;
if (b/10%10>=1) e=b/10%10;
if (b/10>=1) f=b%10;
if (d>c) {t=d;d=c;c=t;}
if (e>c) {t=e;e=c;c=t;}
if (e>d) {t=e;e=d;d=t;}
if (f>c) {t=f;f=c;c=t;}
if (f>d) {t=f;f=d;d=t;}
if (f>e) {t=f;f=e;e=t;}
printf("%d%d%d%d",c,d,e,f);
}
else printf("error");
getch();
return 0;
}

刚学会不好意思,还有我用的是WIN-TC编辑器

2007-05-14 21:07
lg19880220
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-13
收藏
得分:0 
晕,真出丑,惭愧
我的只能变10000以内的数
6楼的能变任何整数
2007-05-14 21:13
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 


#include<stdio.h>
#include<math.h>

int digit[10],n,i;

int main()
{
scanf(\"%d\",&n);
do{
digit[n%10]++;
n/=10;
}while(n);

i=9;
while(i>=0){
if(digit[i]){
digit[i]--;
printf(\"%d\",i);
}
else{
i--;
}
}
printf(\"\n\");
}


思想很简单,就是没什么思想,硬要说一个的话,就是筒排吧。

2007-05-14 21:18
acmilann
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-13
收藏
得分:0 

#include<stdio.h>
#include<math.h>
#include<conio.h>
#define N 10
int main()
{
int i=0,j,k;
unsigned long n,a[100],x,t;
printf("input n:\n");
while(scanf("%lu",&n)!=EOF)
{
do
{a[i]=n%10;
n=n/10;
i++;

}while(n!=0);

for(j=0;j<i;j++)
{
for(k=j+1;k<i;k++)
{
if(a[j]<a[k])
{
t=a[k];
a[k]=a[j];
a[j]=t;

}
}
}


for(j=0;j<i;j++)
printf("%lu",a[j]);

printf("\ninput n:");
i=0;
}
return 0;
}
修改六楼的,


学习编程的秘诀是:编程,编程,再编程
2007-05-14 21:25
快速回复:[求助]求各位数字组成的最大数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029574 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved