c语言将文件中的数字都加上10,然后计算数量,最后按照降序顺序排序
时间: 2023-12-04 08:02:35 浏览: 32
好的,关于您的问题,您可以使用C语言中的文件操作函数以及排序函数来实现。下面是一个示例代码的框架,供您参考:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体来存储数字和出现的次数
typedef struct {
int num;
int count;
} NumCount;
int compare(const void *a, const void *b) {
// 比较函数,按照降序排列
NumCount *nc1 = (NumCount *) a;
NumCount *nc2 = (NumCount *) b;
return nc2->count - nc1->count;
}
int main() {
FILE *fp;
int num, count, i, j, k;
NumCount numCount[1000]; // 假设最多有1000个数字
// 打开文件
fp = fopen("filename.txt", "r");
if (fp == NULL) {
printf("文件打开失败!");
return 0;
}
// 读取文件中的数字,并加上10
count = 0;
while (fscanf(fp, "%d", &num) != EOF) {
num += 10;
// 记录数字出现的次数
for (i = 0; i < count; i++) {
if (num == numCount[i].num) {
numCount[i].count++;
break;
}
}
if (i == count) {
numCount[count].num = num;
numCount[count].count = 1;
count++;
}
}
// 关闭文件
fclose(fp);
// 使用qsort函数对数字按照降序排列
qsort(numCount, count, sizeof(NumCount), compare);
// 输出结果
for (i = 0; i < count; i++) {
for (j = 0; j < numCount[i].count; j++) {
printf("%d ", numCount[i].num - 10); // 输出原始数字
}
}
return 0;
}
```
这个程序可以按照您的需求,将文件中的数字加上10,计算数量,最后按照降序顺序排序并输出。希望这个示例对您有所帮助!