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

October 30, 2020 · 纯属折腾 · 78次阅读

QQ图片20201030190137.png

/*
 * @Description: 给定n个正整数,根据各位数字之和从小到大进行排序。
 * @version: 0.1
 * @Author: Sora
 * @Date: 2020-10-30 18:13:00
 * @LastEditors: Sora
 * @LastEditTime: 2020-10-30 18:59:20
 * @Blog: http://www.sorasky.in/
 */

#include <stdio.h>
#include <math.h>
void bubble_sort(int arr[][2], int len) { //冒泡排序
    int i, j, temp[2];
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
            if (arr[j][1] > arr[j + 1][1]) {
                temp[0] = arr[j][0];
                temp[1] = arr[j][1];
                arr[j][0] = arr[j + 1][0];
                arr[j][1] = arr[j + 1][1];
                arr[j + 1][0] = temp[0];
                arr[j + 1][1] = temp[1];
            }
}
int main(){
    int n,a[1000][2];
    scanf("%d", &n);
    for (int i = 1; i <= n;i++){
        scanf("%d", &a[i][0]);
        a[i][1] = 0;
        for (int j = 1; j <= 1 + (int)log10(a[i][0]); j++){
            a[i][1] += a[i][0] / (int)pow(10, j - 1) % 10;
        }
    }
    bubble_sort(a, n + 1);
    for (int i = 1; i <= n;i++){
        printf("%d %d\n", a[i][0], a[i][1]);
    }
    return 0;
}

除声明外inSoraSky博客(http://www.sorasky.in/)所有内容均为本人所原创,转载时请注明来源!

喝杯水

none

最后编辑于1个月前

添加新评论