112 密码分析
发布日期:2022-03-18 05:04:21
浏览次数:6
分类:技术文章
本文共 1003 字,大约阅读时间需要 3 分钟。
问题描述 :
密码分析学中常常需要统计字符出现的频度。给定若干行短文,要求按字符出现的频度由高到低输出,当两个字符出现的频度相同时,按字符大小的顺序输出。
注意:只需要统计英文字母的频度,非英文字母一律忽略。
输入说明 :
输入由多组数据组成。每组数据由一行长度不超过100的字符串组成,不区分字母大小写,如A与a看作同一个字母。
输出说明 :
对每组输入数据都有若干行输出,每行有两个输出数据,第一个数据为某个大写字母,第二个数据为该字母出现的频度,两个数据之间有一个空格。输出顺序按字母出现的频度由高到低输出,当两个字母的频度相同时,按字母大小的顺序输出。两组输出之间有一行空行。
输入范例 :
Do what you say, say what you do.
This is a test. Count me 1 2 3 4 5. 输出范例 :A 4
O 4 Y 4 D 2 H 2 S 2 T 2 U 2 W 2S 3
T 3 I 2 A 1 E 1 H 1C 1
E 1 M 1 N 1 O 1 T 1 U 1#include#include #include using namespace std;struct { int num=0;}zimu[50];int main(){ char a[1000]; while(gets(a)){ int len=strlen(a); for(int i=0;i ='a'&&a[i]<='z'){ zimu[a[i]-32-'A'].num++; }else if(a[i]>='A'&&a[i]<='Z'){ zimu[a[i]-'A'].num++; } } int max=0,k; for(int i=0;;i++){ { for(int j=0;j<26;j++){ if(zimu[j].num>max){ max=zimu[j].num; k=j; } } } if(!max) break; printf("%c %d\n",k+'A',max); zimu[k].num=max=0; } printf("\n"); } return 0;}
转载地址:https://blog.csdn.net/qq_41992047/article/details/123519004 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月04日 04时38分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
制作一个表格,显示班级的学生信息
2019-04-26
JavaScript的选项卡操作
2019-04-26
Linux常用命令及文件处理命令
2019-04-26
Linux常见目录及作用
2019-04-26
文件链接命令
2019-04-26
Oracle篇--05 Oracle 视图、序列、约束
2019-04-26
【Java面试题四】sql面试题(1)
2019-04-26
【Java面试题五】sql面试题(2)
2019-04-26
【Java面试题六】多线程篇
2019-04-26
【Java面试题七】Java泛型篇
2019-04-26
【Java面试题八】Java算法优化篇
2019-04-26
JDBC与DAO篇--01 JDBC原理、JDBC基础编程
2019-04-26
【Java面试题九】算法篇
2019-04-26
架构设计与分层
2019-04-26
【01】Java面试----基础方面的陷阱
2019-04-26
排序算法整合
2019-04-26
Java程序员常见笔试题分析
2019-04-26
Java笔试题
2019-04-26
Spring Boot快速入门---(一)spring boot的创建及几种启动方式
2019-04-26