C语言字母频率统计
在进行密码破解时有时候需要得到字母出现的频率信息,下面我将简单的使用C语言来读取一个文件,然后统计该文件内的字母出现的频率。
1、在D盘下新建一个文本文件(文件名为"A.txt"),然后在该文件里面保存一些字母。

2、编译并运行程序

C语言源代码:
#include<stdio.h>
#include<stdlib.h> //统计字母的个数
void CountLetter(FILE *fp, int data[])
{
char ch=fgetc(fp); // 读取文件的第一个字符
while(ch!=EOF) // 当读取到的不是文件结束符EOF则继续读取下一个
{
if(ch>='A' && ch<='Z') // 大写字母转小写
ch+=;
if(ch>='a' && ch<='z') // 统计字母个数
data[ch-'a']++; // 当前字母个数加一
ch=fgetc(fp); // 读取文件的下一个字符
}
} //打印统计字母的结果到屏幕上
void PrintCount(int data[])
{
int i=;
int sum = ; // 字母总的个数 while(i--)
{
sum+=data[i]; // 计算字母的总个数
}
printf("统计字母频率结果(共%d个字母):\n",sum);
for(i=; i<; i++)
{
printf("%c=%.2f%% \t",'a'+i,data[i]*1.0/sum * ); // 输出字母的频率
if( (i+)% == ) // 每输出4个后换一行
printf("\n"); // 换行
}
} int main()
{
FILE *fp; // 文件指针
int data[] = {}; // 字母统计数组 fp=fopen("D:\\A.txt","r"); // 以只读的方式打开文件,如果D盘下没有文件"A.txt"则会打开失败
if(fp==NULL) // 判断文件是否打开成功
{
printf("无法打开文件!\n");
exit(); // 退出程序 需要头文件<stdlib.h>
} CountLetter(fp, data); //统计字母的个数
PrintCount(data); // 打印统计结果 fclose(fp); // 关闭数据文件
return ;
}
注意:在C语言中,我们要输出一个%,则要输两个% (即%%)
C语言字母频率统计的更多相关文章
- ytu 2002:C语言实验——单词统计(水题)
C语言实验——单词统计 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 61 Solved: 34[Submit][Status][Web Board] ...
- 贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
1. Bayesian statistics 一组独立同分布的数据集 X=(x1,-,xn)(xi∼p(xi|θ)),参数 θ 同时也是被另外分布定义的随机变量 θ∼p(θ|α),此时: p(X|α) ...
- c语言实现词频统计
需求: 1.设计一个词频统计软件,统计给定英文文章的单词频率. 2.文章中包含的标点不计入统计. 3.将统计结果以从大到小的排序方式输出. 设计: 1.因为是跨专业0.0···并不会c++和java, ...
- 用Python实现《芳华》小说中的汉字频率统计
环境: Python 3的代码,亲测可用. 思路: 是先把每个字符提出来放在列表里:再过滤掉其中的标点符号:最后用字典对某个字出现的频率进行累加. 扩展: 用处很多,稍微改改,既可以用来统计小说或文 ...
- 用Python实现小说中的汉字频率统计
环境: Python 3的代码,亲测可用. 思路: 是先把每个字符提出来放在列表里:再过滤掉其中的标点符号:最后用字典对某个字出现的频率进行累加. 扩展: 用处很多,稍微改改,既可以用来统计小说或文 ...
- 在thinkphp中,写的博文标签多对多关系的标签频率统计算法
常常看到别人的博客里面,或者网站里面有这样随机颜色,但字体大小与标签出现频率有关的标签云,于是自己就想写一个.至于颜色的随机显示,那就很简单了,这里就不列代码. 因为正在学thinkphp,所以数据查 ...
- C语言实现词频统计——第二版
原需求 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 新需求: 1.小文件输入. 为表明程序能跑 2.支持命 ...
- R语言︱数据分组统计函数族——apply族用法与心得
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:apply族功能强大,实用,可以代替 ...
- (改进)Python语言实现词频统计
需求: 1.设计一个词频统计的程序. 2.英语文章中包含的英语标点符号不计入统计. 3.将统计结果按照单词的出现频率由大到小进行排序. 设计: 1.基本功能和用法会在程序中进行提示. 2.原理是利用分 ...
随机推荐
- Unity开发-你必须知道的优化建议
转自:http://blog.csdn.net/leonwei/article/details/18042603 最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的documen ...
- JavaScript 与函数式编程
原文:https://bethallchurch.github.io/JavaScript-and-Functional-Programming/ 译文:http://www.zcfy.cc/arti ...
- spring边边角角
我们在使用ssh框架的时候,很多人抱怨为什么之前都运行得好好的,第二天就报错了,我也是被这个问题纠结了很久. 我们来看看spring的配置文件: <?xml version="1.0& ...
- SQLMAP脱裤
之前就有一个朋友问,咋使用sqlmap脱裤.然后我丢了一个参数给他,他好像懵逼懵逼的.今天又有一个哥们儿在群里问,行吧.就直接教一下. 其实很简单. --dump这个参数就是用来脱裤的哟.如果你要拖整 ...
- sql server 2008 R2 不允许保存更改,您所做的更改要求删除并重新创建以下表
点击菜单栏 [工具]->[选项] 进入如下界面: 将阻止保存要求重新创建表的更改 的勾去掉即可.
- Android之Toast通知的几种自定义用法
Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } ...
- 4.了解AngularJS模块和依赖注入
1.模块和依赖注入概述 1.了解模块 AngularJS模块是一种容器,把代码隔离并组织成简洁,整齐,可复用的块. 模块本身不提供直接的功能:包含其他提供功能的对象的实例:控制器,过滤器,服务,动画 ...
- @PathVariable注解
spring mvc中的@PathVariable是用来获得请求url中的动态参数的,十分方便,复习下: . @Controller public class TestController { @Re ...
- 线程池大小 & cpu core
http://stackoverflow.com/questions/14556037/number-of-processor-core-vs-the-size-of-a-thread-pool ht ...
- Service错误
错误日志: Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act= ...