c语言将文件中的数字每个都自身相加,然后计算数量,最后按照降序顺序排序
时间: 2023-12-04 17:05:03 浏览: 23
好的,我了解您的要求。针对您的问题,您可以尝试以下 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int get_digit_sum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int cmp(const void *a, const void *b) {
int va = *((int*)a), vb = *((int*)b);
if (va > vb) return -1;
if (va < vb) return 1;
return 0;
}
int main() {
FILE *fp;
int nums[1000], num_count = 0;
fp = fopen("input.txt", "r");
if (fp == NULL) {
printf("Failed to open input file.\n");
return 1;
}
int num;
while (fscanf(fp, "%d", &num) != EOF) {
nums[num_count++] = num;
}
fclose(fp);
int sum_count[1001] = {0}; // 数字各位相加的结果的计数数组,下标为0表示数字为0的元素个数
for (int i = 0; i < num_count; i++) {
int digit_sum = get_digit_sum(nums[i]);
sum_count[digit_sum]++;
}
qsort(nums, num_count, sizeof(int), cmp); // 按照降序顺序排序
for (int i = 1; i <= 1000; i++) {
if (sum_count[i] > 0) {
printf("%d:%d\n", i, sum_count[i]); // 输出结果
}
}
return 0;
}
```
该程序会读取当前目录下的 `input.txt` 文件,统计其中每个数字各位相加后的结果的数量,然后按照降序顺序对输入的数字进行排序,最后输出每个数字各位相加后的结果和对应的数量。