c语言编程:输入n个正整数(1<n<=10),然后按照每个数的数字和(取该数的各位数字相加)的大小,从大到小输出这n个数(如果其中有几个数的数字和相同,则这几个数按其输入时的先后顺序输出) 输入格式: 先输入n; 再输入n个正整数 输出格式: 按数字和的大小从大到小输出这n个数,数与数之间用“,”进行分隔。
时间: 2024-03-16 12:42:06 浏览: 93
下面是一个实现该功能的 C 语言程序:
```
#include <stdio.h>
int digit_sum(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
int main() {
int n;
scanf("%d", &n);
int nums[n], sums[n];
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
sums[i] = digit_sum(nums[i]);
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (sums[j] > sums[i] || (sums[j] == sums[i] && j < i)) {
int temp_sum = sums[i];
sums[i] = sums[j];
sums[j] = temp_sum;
int temp_num = nums[i];
nums[i] = nums[j];
nums[j] = temp_num;
}
}
}
for (int i = 0; i < n; i++) {
printf("%d", nums[i]);
if (i < n - 1) {
printf(",");
}
}
printf("\n");
return 0;
}
```
程序运行后,先输入正整数 n,然后输入 n 个正整数。程序会计算每个数的数字和,并将它们存储在 sums 数组中。然后,程序使用冒泡排序算法,按数字和的大小从大到小对 nums 数组中的数进行排序,如果数字和相同,则按照输入顺序排序。最后,程序输出排序后的 nums 数组中的数,用逗号分隔。
阅读全文