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之间的正整数,要求统计每个正整数出现的次数,按次数升序排序并输出?的主要内容,如果未能解决你的问题,请参考以下文章
c语言输出100至999之间所有的个位数十位数百位数之和为5的整数