设为首页 加入收藏

TOP

问题一百一十八:个位数字之和排序
2014-11-23 22:13:09 来源: 作者: 【 】 浏览:1
Tags:问题 一百一十八 个位 数字 之和 排序

print Description

给定n个正整数,根据各位数字之和从小到大进行排序。

Input


输入数据有多组,每组数据占一行,每行的第一个数正整数n(1<=n<=20),表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。


Output

输出每组排序的结果。

Sample Input


2 1 2
3 121 10 111
0

Sample Output


1 2
10 111 121

Description

给定n个正整数,根据各位数字之和从小到大进行排序。

Input


输入数据有多组,每组数据占一行,每行的第一个数正整数n(1<=n<=20),表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。


Output

输出每组排序的结果。

Sample Input


2 1 2
3 121 10 111
0

Sample Output


1 2
10 111 121


[plain] #include

int get(int num);

int main()
{
int j,i,n,a[21],c;

while(1)
{
scanf("%d",&n);
if(n==0)
{
break;
}

for(i=0;i {
scanf("%d",&a[i]);

}
for(i=0; i {
for(j=i+1; j {
if(get(a[i])> get(a[j]))
{
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
}
for(i=0;i {
printf("%d", a[i]);
if(i {
printf(" ");
}
}
printf("\n");
}

return 0;
}

int get(int num)
{
int sum=0;

while(num)
{
sum+=num%10;
num/=10;
}

return sum;
}

#include

int get(int num);

int main()
{
int j,i,n,a[21],c;

while(1)
{
scanf("%d",&n);
if(n==0)
{
break;
}

for(i=0;i {
scanf("%d",&a[i]);

}
for(i=0; i {
for(j=i+1; j {
if(get(a[i])> get(a[j]))
{
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
}
for(i=0;i {
printf("%d", a[i]);
if(i {
printf(" ");
}
}
printf("\n");
}

return 0;
}

int get(int num)
{
int sum=0;

while(num)
{
sum+=num%10;
num/=10;
}

return sum;
}

\


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇问题一百一十七:排列 下一篇问题一百一十九:简单编码

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: