Problem Description
给定n个正整数,根据各位数字之和从小到大进行排序。
Input
输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。n<=10
Output
输出每组排序的结果
#include<iostream>
using namespace std;
int shuzi(int b) {
int sum=0;
while (b) {
sum += b % 10;
b /= 10;
}
return sum;
}
int main() {
int n,a[1000],b[1000];
while (cin>>n) {
for (int i = 0;i < n;i++) {
cin >> a[i];
b[i] = shuzi(a[i]);
}
for (int i = 0;i < n;i++) {
for (int j = 0;j < n - i - 1;j++) {
int t,y;
if (b[j] > b[j + 1]) {
t = b[j];
b[j] = b[j + 1];
b[j + 1] = t;
y= a[j];
a[j] = a[j + 1];
a[j + 1] = y;
}
}
}
for (int i = 0;i < n;i++) {
if (i == 0)
{
cout << a[i];
}
else cout << " " << a[i];
}
cout << endl;
}
return 0;
}