题目要求:
输入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;
}
Comments NOTHING