C语言 在文件中存放的均为40至60之间的正整数,要求统计每个正整数出现的次数,按次数升序排序并输出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 在文件中存放的均为40至60之间的正整数,要求统计每个正整数出现的次数,按次数升序排序并输出?相关的知识,希望对你有一定的参考价值。

在文件in.dat中存放的均为40至60之间的正整数,要求统计每个正整数出现的次数,按次数升序排序并输出。

参考技术A 参考代码如下:

#include <stdio.h>
#define N 100 //定义数组长度为100,假设文件中的最大正整数不超过100
int main()

FILE *fp; //定义文件指针
int a[N] = 0; //定义一个数组,用来存放每个正整数出现的次数,初始值都为0
int num; //定义一个变量,用来读取文件中的每个数字
int i, j, t; //定义三个变量,用来进行排序操作
fp = fopen("in.dat", "r"); //打开文件in.dat,并以只读模式打开
if (fp == NULL) //判断文件是否打开成功

printf("Can not open file!\n"); //如果失败,输出提示信息并退出程序
return -1;

while (fscanf(fp, "%d", &num) != EOF) //循环读取文件中的每个数字,直到文件结束

a[num]++; //如果是,则对应的数组元素加1,表示该数字出现了一次

fclose(fp); //关闭文件

for (i = 0; i < N - 1; i++) //对数组进行冒泡排序,按照出现次数从小到大排列

for (j = 0; j < N - i - 1; j++)

if (a[j] > a[j + 1])

t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;




for (i = 0; i < N; i++) //输出排序后的结果

if (a[i] > 0) //只输出出现过的正整数及其次数

printf("%d: %d\n", i, a[i]);




输出 10000 至 99999 中所有的回文数(回文数是指从左到右读与从右到左读都一样的正整数,如 11,22,3443,94349 等)

`在这里插入代码片@[TOC](

以上是关于C语言 在文件中存放的均为40至60之间的正整数,要求统计每个正整数出现的次数,按次数升序排序并输出?的主要内容,如果未能解决你的问题,请参考以下文章

Wannafly 挑战赛16 A 取石子

c语言输出100至999之间所有的个位数十位数百位数之和为5的整数

C语言:输入n(小于10的正整数),输出如下形式的数组?

如何用C语言实现输入1个5位以内的正整数 分别输出每位数

c语言 从键盘输入正整数m和n,将m到n之间的所有素数存入数组s中,并将s中元素5个一行输出。

C语言 输入100个数据(0—100之间)统计大于60的数