/*
输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int ori;
int n;
}node;
int cmp(const void *a,const void *b)
{
if(((node*)a)->n==((node*)b)->n)
return ((node*)a)->ori-((node*)b)->ori;
return ((node*)a)->n-((node*)b)->n;
}
int main(int argc, char *argv[])
{
node num[100];
int t;
int i=0;
int len;
while(~scanf("%d",&t)){
num[i++].ori=t;
}
len=i;
for(i=0;i<len;++i)
{
num[i].n=0;
int n=num[i].ori;
while(n)
{
num[i].n+=n%10;
n/=10;
}
}
qsort(num,len,sizeof(node),cmp);
for(i=0;i<len-1;++i)
printf("%d ",num[i].ori);
printf("%d\n",num[len-1].ori);
return 0;
}
测试数据:
11 3 2 4 5 9 8 7 10 6
测试结果: