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

/*
* @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;
}