按数字和大小依次输出各数

wjx 发布于 2023-12-11 234 次阅读


题目要求:

输入n个正整数(1<n<=10),然后按照每个数的数字和(取该数的各位数字相加)的大小,从大到小输出这n个数(如果其中有几个数的数字和相同,则这几个数按其输入时的先后顺序输出)。

输入格式:

先输入n;
再输入n个正整数。

输出格式:

按数字和的大小从大到小输出这n个数,数与数之间用“,”进行分隔。

输入样例:

10
1 2 3 4 5 11 12 13 21 22

输出样例:

5,4,13,22,3,12,21,2,11,1

代码展示:

#include <stdio.h>
//计算函数
int a(int n) {
    int sum = 0;
    while (n != 0) {
        sum = sum + (n % 10);
        n = n / 10;
    }
    return sum;
}
//主函数
int main() {
    //定义变量
    int n, i, t;
    scanf("%d", &n);
    int num[n - 1];
    //获取n个正整数
    for (i = 0; i < n; i++) {
        scanf("%d", &num[i]);
    }
    //冒泡排序,把最大的放到最右边
    for (i = 1; i < n; i++) {
        for (int j = 0; j < n - 1; j++) {
            if (a(num[j]) < a(num[j + 1])) {
                t = num[j];
                num[j] = num[j + 1];
                num[j + 1] = t;
            }
        }
    }
    //输出结果
    for (i = 0; i < n - 1; i++) {
        printf("%d,", num[i]);
    }
    printf("%d", num[n - 1]);
    return 0;
}