有一行电文,已按下面规律译成密码:

即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编写程序将密码译回密码和原文。
解析:
可以定义一个数组ch,在其中存放电文。如果字符ch[j]是大写字母,则它是26个字母中的第(ch[j]-64)个大写字母。即第2个字母。按密码规定应将它转换为第66,他应是字母表中第(66-64),即第2个字母。按密码规定应将它转换为第(26-i+1)个大写字母,即第(26-2+1)=25个大写字母。而26-i+1=26-(ch[j]-64)+1=26+64-ch[j]+1,即91-ch[j] (如ch[j]等于’B’,91-‘B’=91-66=25,ch[j]应将它转换为第25个大写字母)。该字母的ASCII码为91-ch[j]+64,而91-ch[j]的值为25,因此91-ch[j]+64=25+64=89,89是’Y’的ASCII码。表达式91-ch[j]+64可以直接表示为155-ch[j]。小写字母情况与此相似,但由于小写字母’a’的ASCII码为97,因此处理小写字母的公式应改为:26+96-ch[j]+1+96=123-ch[j]+96=219-ch[j]。
例如,若ch[j]的值为’b’,则其交换对象为219-‘b’=219-98=121,它是’y’的ASCII码。
由于此密码的规律是对此转换,即第1个字母转换为最后一个字母,最后一个字母转换为第1个字母,因此从原文译为密码和从密码译为原文,都是用同一个公式。

方法一:用两个字符数组分别存放原文和密码

#include<stdio.h>
#include<string.h>
int main(){int j,n;char ch[80],tran[80];printf("input cipher code:");gets(ch);printf("\ncipher code:%s",ch);j=0;while(ch[j]!='\0'){if((ch[j]>='A')&&(ch[j]<='Z'))tran[j]=155-ch[j];else if((ch[j]>='a')&&(ch[j]<='z'))tran[j]=219-ch[j];elsetran[j]=ch[j];j++;}n=j;printf("\noriginal text:");for(j=0;j<n;j++)putchar(tran[j]);printf("\n");return 0;
}

方法二:只用一个字符数组

#include<stdio.h>
#include<string.h>
int main(){int j,n;char ch[80];printf("input cipher code:");gets(ch);printf("\ncipher code:%s",ch);j=0;while(ch[j]!='\0'){if((ch[j]>='A')&&(ch[j]<='Z'))ch[j]=155-ch[j];else if((ch[j]>='a')&&(ch[j]<='z'))ch[j]=219-ch[j];elsech[j]=ch[j];j++;}n=j;printf("\noriginal text:");for(j=0;j<n;j++)putchar(ch[j]);printf("\n");return 0;
}

C语言 解译电文密码相关推荐

  1. c语言qq密码程序设计,【转】C语言实现QQ密码大盗

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [转]C语言实现QQ密码大盗 一般的盗密码的软件的软件都是通过监视键盘来获得密码,这样操作比较方便,但是这样也存在一定问题,密码有的时候不是很准确,因为有 ...

  2. C语言实现古典密码—内含实例

    C语言实现古典密码-内含实例 恺撒密码 移位变换 仿射变换 多表代换 写在前沿的话: C语言断断续续的学了不少,但还是对结构体.指针.数据结构等了解甚少,所以只能用最基本的循环这些来写,比较繁杂,能力 ...

  3. 周期置换加密算法用c语言实现,古典密码实验报告.doc

    . .. 哈尔滨工程大学 实 验 报 告 实 验 名 称: 古典密码算法 班 级: 学 号: 姓 名: 实 验 时 间: 2014年4月 成 绩: 指 导 教 师: 实验室名称: 哈尔滨工程大学实验室 ...

  4. C程序设计 电文密码——有一行电文,已按下面规律译成密码

    有一行电文,已按下面规律译成密码: A-->Z   a--->z B--->Y  b--->y ... 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母.非 ...

  5. c语言实现一个密码管理器(更新中)

    作为电脑爱好者,会经常注册各种网站的账号,但是考虑到隐私的可能泄露,不喜欢把密码托管给浏览器,于是经常忘记各种密码.饱受折磨后,我决定用学的一点点c语言知识写一个密码管理器. 在写之前我希望它目前可以 ...

  6. c语言中定义密码为英文字母,请设计 一个密码生成器,要求随机生成4组10位密码(C语言)...

    请设计 一个密码生成器,要求随机生成4组10位密码(密码只能由字母和数字组成),每一组必须包含至少一个大写字母,每组密码不能相同,输出生成的密码. #include #include #include ...

  7. [心得]C语言中实现密码输入 回显星号*

    C语言为密码输入提供了一函数getpass(); #include <stdio.h> #include <unistd.h> int main() { char *passw ...

  8. c语言1076 wifi密码(15分),1076 Wifi密码 (15 分)

    下面是微博上流传的一张照片:"各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答 ...

  9. 安全密码c语言编程,商用密码算法原理与C语言实现

    2020年1月1日,<中华人民共和国密码法>正式施行.国家鼓励和支持密码科学技术研究与应用,促进密码科学技术进步与创新,加强密码人才培养和队伍建设,采取多种形式加强密码安全教育.本书是在国 ...

最新文章

  1. 数字图像处理——第四章 频率域图像增强
  2. 笔记-计算机网络基础-开放系统互连参考模型OSI
  3. [网络安全自学篇] 三十三.文件上传之绕狗一句话原理和绕过安全狗(六)
  4. date时区 es logstash_elastic date时区问题解决办法
  5. LVS学习笔记之三种模式的特点概括
  6. 空间平面,空间直线及它们的方程
  7. springmvc文件下载之文件名下划线问题终极解决方案
  8. 如何解决 Nginx 端口映射到外网后访问地址端口丢失的问题
  9. 第二次公共考试,判断错题集
  10. Android stdio安装
  11. 苹果退款_退货与退款 - 购买帮助 - Apple (中国大陆)
  12. 【实用网址】:平常用不到,想用的时候找不到
  13. nginx防恶意ip访问控制
  14. html页面显示代码插件,jQuery – 高亮动态显示页面HTML代码插件
  15. Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件
  16. 小波调研(二):一维离散小波分析
  17. 计算机网络 计算路由表
  18. IPv6的NAT原理以及MAP66
  19. 专攻心脑疾病AI市场,数坤科技完成创世伙伴领投2亿元B轮融资...
  20. LeetCode-876. 链表的中间结点

热门文章

  1. reactive programming
  2. java word 乱码_(word)Java乱码问题解决方案.doc
  3. 3ds Max科研作图
  4. 电子书下载:Pragmatic Unit Testing in C# with NUnit
  5. 一篇网络流 基本模型超全总结(最大流 费用流 多源汇最大流 上下界可行流) 思路+代码模板
  6. Android LayoutInflater原理分析,带你一步步深入了解View
  7. 微软大佬带你深入解析websocket丨tcp自定义协议的设计丨服务器高并发场景的优化
  8. 双系统安装红旗linux,win7与红旗Linux7.0双系统安装的方法
  9. Star CCM+ 案例 - 旋风分离器 (cyclone separator)-5 网格加密
  10. RHEL 5基础篇—linux的简介