输入n个正整数(1<n<=10),然后按照每个数的数字和(取该数的各位数字相加)的大小,从大到小输出这n个数(如果其中有几个数的数字和相同,则这几个数按其输入时的先后顺序输出) 输入格式: 先输入n; 再输入n个正整数 输出格式: 按数字和的大小从大到小输出这n个数,数与数之间用“,”进行分隔。c语言
时间: 2024-02-01 17:16:18 浏览: 67
以下是C语言代码实现:
```
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int nums[n];
int sums[n];
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
int sum = 0;
int num = nums[i];
while (num) {
sum += num % 10;
num /= 10;
}
sums[i] = sum;
}
// 冒泡排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (sums[j] < sums[j + 1]) {
int tempSum = sums[j];
sums[j] = sums[j + 1];
sums[j + 1] = tempSum;
int tempNum = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = tempNum;
}
}
}
for (int i = 0; i < n; i++) {
printf("%d", nums[i]);
if (i < n - 1) {
printf(",");
}
}
return 0;
}
```
首先读入n和n个正整数,并计算每个数的数字和,然后使用冒泡排序按数字和从大到小排序。最后输出排序后的n个数,数与数之间用逗号分隔。
阅读全文