您的位置:首页 > 编程语言 > C语言/C++

C语言实验——各位数字之和排序

2014-01-21 09:00 344 查看

题目描述

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

输入

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

输出

输出每组排序的结果。

示例输入

2 1 2
3 121 10 111
0


示例输出

1 2
10 111 121


代码如下:

#include<cstdio>
#define N 99999
int main()
{int i,j,n,q
,p
,tam,temp,first;
while(scanf("%d",&n)!=EOF&&n!=0)
{first=1;
for(i=0;i<n;i++)
{scanf("%d",&q[i]);}
for(i=0;i<n;i++)
{
tam=q[i];
temp=0;
while (tam)
{ temp+=tam%10;
tam=tam/10;

}
p[i]=temp;
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(p[j]>p[j+1])
{temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
tam=q[j];
q[j]=q[j+1];
q[j+1]=tam;
}
for(i=0;i<n;i++)
{
if(first) first=0;
else printf(" ");
printf("%d",q[i]);
}printf("\n");

}
return 0;
}
这是昨天在山东理工OJ上做的题,题目很简单。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序