用c语言编写程序: 按数字和大小依次输出各数 输入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
时间: 2024-02-06 08:12:35 浏览: 70
以下是用C语言编写的程序:
```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, i, j, tmp, tmp_sum;
int nums[10];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
int sum_i = digit_sum(nums[i]);
int sum_j = digit_sum(nums[j]);
if (sum_i < sum_j || (sum_i == sum_j && i > j)) {
tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
}
for (i = 0; i < n; i++) {
printf("%d", nums[i]);
if (i < n - 1) {
printf(",");
}
}
printf("\n");
return 0;
}
```
程序的思路是先读入n和n个正整数,然后对这n个数按照数字和的大小进行排序。排序使用了冒泡排序法,如果两个数的数字和不同,则按数字和从大到小排序;如果两个数的数字和相同,则按输入的先后顺序排序。最后按顺序输出排序后的结果,数与数之间用逗号进行分隔。
阅读全文