cryptography.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 2KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 3
    下载次数
  • 2009-11-23 09:00
    上传日期
字母频率统计:包括1维与二维字母出现频率与总数
cryptography.rar
  • cryptography.c
    4.1KB
内容介绍
#include<stdio.h> #include<string.h> #include<stdlib.h> void main(void) { int i,j,k,l,word[26],words[26][26],flag,results[10]; char compare1[3],compare2[3],cha,chb; double rate[26],rate1[26][26],totall,result,midrate[676],t; FILE *fp; compare1[2]='\0'; compare2[2]='\0'; for(i=0;i<26;i++) /*统计单个字符*/ { cha=(char)(i+97); word[i]=0; if((fp=fopen("F:\\cryptography\\data.txt","r"))==NULL) { printf("文件打开失败\n"); exit(1); /*打开文件*/ } while((chb=fgetc(fp))!=EOF ) /*读到文件结尾时结束*/ { if((int)chb>=65&&(int)chb<=90) chb=(char)(chb+32); /*若为大写字母,则转换为对应的小写字母*/ if(cha==chb) /*统计字符个数*/ word[i]++; } fclose(fp); /*关闭文件*/ } if((fp=fopen("F:\\cryptography\\data.txt","r"))==NULL) { printf("文件打开失败\n"); exit(1); /*打开文件*/ } for(i=0;i<26;i++) /*统计两个字符*/ for(j=0;j<26;j++) { words[i][j]=0; compare1[0]=(char)(i+97); compare1[1]=(char)(j+97); flag=0; compare2[0]=(char)0; compare2[1]=(char)0; while((chb=fgetc(fp))!=EOF) /*读到文件结尾时结束*/ { if((int)chb>=65&&(int)chb<=90) chb=(char)(chb+32); /*若为大写字母,则转换为对应的小写字母*/ if((char)chb=='\t') { compare2[0]=(char)0; compare2[1]=(char)0; flag=0; } /*读到空格件时将记录文件中字符的字符数组清空,将标志flag值置为0*/ else if((char)chb=='\n') /*读到换行标志时不做任何处理*/ ; else { if (flag==0) /*读到字符时若标志符flag为0,则直接将字符放入记录字符数组首处*/ { compare2[0]=chb; flag++; } else if(flag==1) /*flag为1时表示标记数组中已有一个字符, 再将读得的字符加入则数组中有两个字符,就可以进行比较了!*/ {compare2[1]=chb; /*将新读到的字符加入到标记数组*/ if(!strcmp(compare1,compare2)) /*字符串相等时执行下列操作*/ words[i][j]++; /*统计字符串个数*/ compare2[0]=compare2[1]; /*数组中后一个字符赋值给前一个字符*/ compare2[1]=(char)0; /*后一个字符置0*/ } } } rewind(fp); //将指针移到开始处。 } totall=0; for(i=0;i<26;i++) totall+=word[i];/* 统计字符总个数*/ for(i=0;i<26;i++) rate[i]=(double)(word[i])/totall; /*求出各个字母所占比例*/ for(i=0;i<26;i++) printf("字母%c 的数量为:%d\n",(char)(i+97),word[i]); for(i=0;i<26;i++) printf("字母%c 所占的百分比为:%f\n",(char)(i+97),rate[i]); //输出各字母所占的比例 totall=0; for(i=0;i<26;i++) for(j=0;j<26;j++) totall+=words[i][j]; /*统计字符总的个数*/ printf("总的字符串个数是:%f\n",totall); for(i=0;i<26;i++) for(j=0;j<26;j++) { rate1[i][j]=(double)words[i][j]/totall; } k=0; for(i=0;i<26;i++) for(j=0;j<26;j++) { midrate[k]=rate1[i][j]; //将rate1[i][j]中的概率值赋值给midrate[k]以进行排序 k++; } for(i=0;i<8;i++) /*统计概率最小的5各字符串*/ { result=midrate[i]; results[i]=i; for(j=i+1;j<676;j++) { if(midrate[j]>result) { result=midrate[j]; results[i]=j; } } t=midrate[i]; midrate[i]=midrate[results[i]]; midrate[results[i]]=t; } for(k=0;k<8;k++) //输出概率最大的五个字符串 { l=0; for(i=0;i<26;i++) for(j=0;j<26;j++) { if(l==results[k]) printf("概率最大的第:%d个字符串是:%c%c,所占概率为:%f\n",k,(char)(i+97),(char)(j+97),rate1[i][j]); l++; } } for(i=0;i<8;i++) /*统计概率最小的5各字符串*/ { result=midrate[i+8]; results[i+8]=i+8; for(j=1+i;j<676;j++) { if(midrate[j]<result) { result=midrate[j]; results[i+8]=j; } } t=midrate[i]; midrate[i]=midrate[results[i+8]]; midrate[results[i+8]]=t; } for(k=0;k<8;k++) //输出概率最小的五个字符串 { l=0; for(i=0;i<26;i++) for(j=0;j<26;j++) { if(l==results[k+8]) printf("概率最小的第:%d个字符串是:%c%c,所占概率为:%f\n",k,(char)(i+97),(char)(j+97),rate1[i][j]); l++; } } }
评论
    相关推荐
    • 丢包测试工具HoloWAN_Recorder_Pro_v1.2.7.zip
      HoloWAN Recorder Pro 分为⼀个 ...Ping 测试则在客户端以 最快 0.2 秒/次 的频率向服务端发送 ICMP 报⽂ ,待服务端响应后,客户端可以计算出报⽂的平均单向时延、判断是否丢包,进⽽统计出平均时延、丢包率等数据。
    • leetcode网页crash-my_open_source_cs:我的免费开源课程来学习计算机科学
      概率与统计导论 URI 12 周 6-10 小时/周 / 代数 :check_mark: 代数 URI 12 周 6-10 小时/周 / 没有任何 :check_mark: 系统 课程 学校 期间 努力 频率 先决条件 地位 耶路撒冷希伯来大学 6 周 5 小时/周 一个月两次 ...
    • GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz
      guassdb100在redhat上安装包,单机部署的包,安装步骤请看我的文中介绍,经过大量实验搭建总结出来的文档
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等
    • 卷积神经网络
      这是卷积神经网络的一个实际用例,已经调试好了,能够在matlab上成功运行,适合从事卷积神经网络(CNN)研究的人员学习使用。
    • android从bootloader到launcher启动流程整理
      讲述android 开机流程 从boot rom---bootloader---init--zygote---systemserver---ams 并附上自己整理的每个流程的流程图 ,清晰熟悉android 启动流程
    • 分数阶混沌系统:分数阶混沌系统的数值解。-matlab开发
      该工具箱包含可用于模拟一些著名的分数阶混沌系统的函数,例如: - 陈的系统, - Arneodo的系统, - Genesio-Tesi 的系统, - 洛伦兹系统, - 牛顿-莱普尼克系统, - 罗斯勒的系统, - Lotka-Volterra系统, - 达芬的系统, - 范德波尔的振荡器, -伏打的系统- 陆氏系统, - 刘的系统, - Chua的系统, - 金融系统, - 3 细胞 CNN。 这些函数以数值方式计算描述混沌系统的分数阶非线性微分方程的解。 每个函数返回总模拟时间的状态轨迹(吸引器)。 更多详情请看书: Ivo Petras,分数阶非线性系统:建模、分析和仿真,Springer,系列:非线性物理科学,2011,ISBN 978-3-642-18100-9。 http://www.springer.com/engineering/control/book/978-3-
    • matlabpam代码-dsp-library:用于光通信的MATLABDSP函数库
      matlab pam代码 DSP库 该项目包含几种不同的功能,可将DSP算法应用于光通信。 这些功能适用于相干和非相干(PAM,DMT)光通信。 大多数功能是相互独立的。 因此,该代码中的功能可以轻松使用,并与其他DSP功能结合使用。 用法 功能列表以及简短说明在文件中。 输入和输出参数的描述在每个函数的标题中。 讯号 通常,输入(和输出)信号在第一维度上具有时间(例如,列向量),而第二维度用于一次管理多个信号(例如,不同的极化,不同的参数等)。 之所以选择这种约定,是因为MATLAB通过将列保留在内存的连续部分中来存储矩阵,因此,这种约定比其他方法(行向量)要快。 参数 大多数功能使用参数结构作为输入参数。 函数中使用的参数的描述通常在标头中,而coherent-dsp函数的默认参数在文件中。 参考 执照 此代码在下发布。
    • 有关多目标跟踪的PHD滤波的一些资料
      一些关于多目标跟踪的新的文献,主要是有关概率假设密度(PHD)的
    • 基于python开发的全国新工商采集工具 v1.2版本
      这个软件是通过scrapy爬虫框架结合代理IP池再加上request模拟请求技术以及验证码识别技术,可以做到日更新采集全国新工商信息。采集的数据自动存储在mysql数据库表里,可下载全量1.8亿多企业工商基本信息和36维度的详细信息.支持sql和excel导出数据包格式。