输入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,c语言
时间: 2024-02-01 14:16:23 浏览: 54
以下是C语言代码实现:
```c
#include <stdio.h>
// 计算数字和
int digit_sum(int n) {
int sum = 0;
while (n) {
sum += n % 10;
n /= 10;
}
return sum;
}
// 冒泡排序
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (digit_sum(arr[j]) < digit_sum(arr[j+1])) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
bubble_sort(arr, n);
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if (i != n - 1) {
printf(",");
}
}
return 0;
}
```
代码思路:
1. 定义一个 `digit_sum` 函数,用于计算一个数的数字和。
2. 定义一个冒泡排序函数,按照数字和从大到小排序。
3. 在主函数中先读入 n 和 n 个正整数。
4. 调用冒泡排序函数对这 n 个数进行排序。
5. 输出排序后的结果,数与数之间用逗号分隔。
阅读全文