输入n个正整数(1<n<=10),然后按照每个数的数字和(取该数的各位数字相加)的大小,从大到小输出这n个数(如果其中有几个数的数字和相同,则这几个数按其输入时的先后顺序输出) c语言
时间: 2024-03-21 14:40:05 浏览: 17
好的,以下是 C 语言的代码实现:
```c
#include <stdio.h>
// 计算数字和的函数
int digitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int main() {
int n, i, j, temp;
int numbers[10];
// 输入 n 个正整数
printf("请输入一个正整数 n (1<n<=10):");
scanf("%d", &n);
printf("请输入 %d 个正整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// 对数字进行排序
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (digitSum(numbers[i]) < digitSum(numbers[j]) ||
(digitSum(numbers[i]) == digitSum(numbers[j]) && i > j)) {
temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
// 输出排序后的结果
printf("按数字和从大到小输出结果如下:");
for (i = 0; i < n; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
运行程序后,根据提示输入 n 个正整数,然后程序会按照每个数的数字和从大到小输出这 n 个数。如果有几个数的数字和相同,则这几个数按其输入时的先后顺序输出。