在传递信息的过程中,为了加密,有时需要按一定规则将文本转换成密文发送出去。有一种加密规则是这样的:

1. 对于字母字符,将其转换成其后的第3个字母。例如:A→D,a→d,X→A,x→a;
2. 对于非字母字符,保持不变。
现在,请你根据输入的一行字符,输出其对应的密码。

输入:I(2016)love(08)China(15)!
输出:L(2016)oryh(08)Fklqd(15)!

注意:字符串长度不超过100。

这个呢就是一个关于循环的题目了
这个题目就是关键在于如何最后三个字符的转化了,但是如果说你是选择了用if语句来对最后三个进行特殊处理的话呢,你就可以关闭这个博客了。恩

下面介绍的是一个循环的方法去实现转化。
就拿大写字母来做个例子吧。
A,B,C,D,E,F,G,H…X,Y,Z.
那么就是最后三个字符的如何回头?

第一步改变

我的话呢,第一步就是想着将其变成一个圆,而不是一个横排,
那么就有了一个26个字母的圆。

第二步就是找规律

A---->D 就是 ‘A’+3
B---->F 就是 ‘A’+(‘B’-‘A’+3)
C---->G 就是 ‘A’+(‘C’-‘A’+3)
.
.
.
X---->A 就是 ‘A’+(‘X’-‘A’+3) 发现这里不行。
就想办法将其转回去,那就就将其变成一个圆,我们可以利用一个取余的情况进行循环。
就变成了下面这种形式:
‘A’+(‘X’-‘A’+3)%26
就可以解决这个一路向前走的问题了。

可能你会觉得有点懵,为啥这个就可以圈圈圈圈圈圈了呢?!
举个例子:
1,2,3,4,5五个数字
那么就有
1%5=1,
2%5=2,
3%5=3,
4%5=4,
5%5=0,
6%5=1,
7%5=2,
看出来了吧,类比一下就行了,有多少个数就对多少取余。
附上完整代码:

#include <stdio.h>
#include <string.h>
int main()
{int i,j,k;char a[100],b[100];gets(a);for(i=0;i<strlen(a);i++){if (a[i]>='A' && a[i]<='Z'){a[i]='A'+(a[i]-'A'+3)%26;}else if (a[i]>='a' && a[i]<='z'){a[i]='a'+(a[i]-'a'+3)%26;}}for (j=0;j<strlen(a);j++){printf("%c",a[j]);}return 0;
}

如果大家有更好的解法,也可以留言,相互学习交流。

凯撒密码转化,循环,C语言版!相关推荐

  1. 凯撒密码加密解密C语言详细代码

    凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...

  2. 凯撒密码C语言去掉空格字符,凯撒密码的问题C语言

    满意答案 xlaijing19 推荐于 2016.04.01 采纳率:43%    等级:12 已帮助:6257人 最低0.27元开通文库会员,查看完整内容> 原发布者:耿万德 凯撒密码是一种非 ...

  3. 凯撒密码C语言用ASCII码,凯撒密码帮助ASCII循环

    我想创建一个凯撒密码,我有输入作为程序中的硬代码.当我运行该程序时,它的工作原理是,但应该是"Y"的所有内容都是"?".我无法弄清楚如何循环ASCII,所以当它 ...

  4. C语言凯撒密码字母向后偏移三位,凯撒加密解密(java字母移位)

    1.设计思想:加密就是将字符数据转化为ASC码表中的数字,a-w之间通过加3之后再转化为字符型输出,x-z之间通过转化为ASC码表中的数字后减去23再转化为字符型输出.解密就是将字符数据转化为ASC码 ...

  5. 凯撒密码C语言去掉空格字符,凯撒密码C语言实现

    <凯撒密码C语言实现>由会员分享,可在线阅读,更多相关<凯撒密码C语言实现(8页珍藏版)>请在人人文库网上搜索. 1.凯撒密码是一种非常古老的加密方法, 相传当年凯撒大地行军打 ...

  6. 凯撒密码c语言小写字母,凯撒密码c(c语言编程凯撒密码)

    凯撒密码c(c语言编程凯撒密码) 2020-05-15 13:09:51 共10个回答 #include#includeintmain(){charsave[10][30];inta,b,i,j;sc ...

  7. 凯撒加密的python语言程序_python实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...

  8. 凯撒密码加密、解密、暴力破解(C语言实现)

    C语言设计,替换密码开发设计,2022年9月信息安全课程作业分享 #include<stdio.h> #include<string.h> #include<stdlib ...

  9. 凯撒密码c语言公式原理,凯撒密码 C语言实现.pdf

    凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不 被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全.他的原理很简单, 说到底就是字母于字母之间的替换.下面 ...

  10. Java版 凯撒密码 加密、解密、暴力破解

    Java版 凯撒密码 加密.解密.暴力破解 用Java实现凯撒密码的 '加密' 和 '解密' 工作 代码实现如下: 代码片 package com.hellow.demo;import java.ut ...

最新文章

  1. 这所985大学宣布调查结果:抄袭事实成立!撤销其硕士学位!
  2. swift_042(Swift的typealias(别名)的用法)
  3. 【CVPR2020论文解读】300米远程深度估计:港科大重磅开源自动驾驶深度感知新技术,远超现有雷达...
  4. CentOS压缩命令zip
  5. 如何使YouTube视频连续循环播放
  6. A piecture of J2EE Core Patterns
  7. 深度学习-吴恩达-笔记-1-深度学习引言
  8. 北京发布人工智能产业政策,该如何高效关注行业动态、把握新机遇?
  9. js中数组反向、排序reverse、sort
  10. 使用socat实现对asok的远程访问
  11. DEVC中的for编译出错问题解决办法
  12. JAVA程序设计(学堂在线-清华大学) 课后练习题(更新)
  13. 学习分析技术【02】--社交网络分析
  14. 移动电源给路由器供电
  15. python读取批量txt文件
  16. python爬取网易云音乐 专辑图片+歌词
  17. manjaro和android数据线传数据
  18. 程序员才看得明白的面试圣经
  19. 分布式事务2PC论文翻译(Concurrency Control and Recovery in Database Systems )
  20. 嵌入式学习班到底怎么样?

热门文章

  1. 用Markdown记笔记后转换成html
  2. FreeRTOS 配置文件
  3. Debian9系统上 基于Qt5.12.1 开发的QML界面程序 无法输入中文
  4. 浅谈InnoDB存储引擎的MVCC机制
  5. duilib 中list控件的扩展
  6. 何为仿射变换(Affine Transformation)
  7. 数据库学习一站式入门资料(纯干货)
  8. 学java用什么编译器_学习Java用什么编译软件好
  9. react 富文本编辑器 react-draft-wysiwyg 的使用总结
  10. VC++可视化编程——创建空白窗口