仅供参考,共同进步。

AC日记 - - - 23——各位数字之和排序

Problem Description

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

Input

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

Output

输出每组排序的结果。

Example Input

2 1 2
3 121 10 111
0

Example Output

1 2
10 111 121

Hint

#include <stdio.h>
#include <stdlib.h>
int f(int n)//写一个计算各位数字之和的数。
{
    int sum=0;
    while(n!=0)
    {
        sum+=n%10;
        n=n/10;
    }
    return sum;
}
int main()
{
    int n;
    int *num, i, j, temp;
    while(scanf("%d", &n)!=EOF)
    {
        if(n==0)
        return 0;
        num=malloc(sizeof(int)*n);
        for(i=0; i<n; i++)
        scanf("%d", &num[i]);

        for(i=1; i<n; i++)
        for(j=0; j<n-i; j++)
        {
            if(f(num[j])>f(num[j+1]))
            {
                temp=num[j+1];
                num[j+1]=num[j];
                num[j]=temp;
            }
        }

        for(i=0; i<n; i++)
        {
            if(i==0)
            printf("%d", num[i]);
            else
            printf(" %d", num[i]);
        }
            printf("\n");
    }
}

  

posted @ 2018-01-16 16:58  南山i  阅读(287)  评论(0编辑  收藏  举报