请帮我编写C语言程序:7-4 按数字和大小依次输出各数 分数 20 作者 叶斌 单位 成都信息工程大学 输入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 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2024-02-06 21:11:15 浏览: 149
章-C语言及程序设计概述(与“语言”有关文档共29张).pptx
以下是程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXN 10
int sum_digit(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
int main() {
int n;
int nums[MAXN];
int sums[MAXN];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
sums[i] = sum_digit(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 tmp = sums[i];
sums[i] = sums[j];
sums[j] = tmp;
tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
}
for (int i = 0; i < n; i++) {
printf("%d", nums[i]);
if (i < n - 1) {
printf(",");
}
}
printf("\n");
return 0;
}
```
阅读全文