IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言密码破译China问题 -> 正文阅读

[数据结构与算法]C语言密码破译China问题

要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.

例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

首先这个题目由于测试数据是China是有题目本身就给出的,可以直接这样回答:

#include"stdio.h"
int main()
{
    char ch1,ch2,ch3,ch4,ch5;
    scanf("%c",&ch1);
    scanf("%c",&ch2);
    scanf("%c",&ch3);
    scanf("%c",&ch4);
    scanf("%c",&ch5);
    printf("%c%c%c%c%c",ch1+4,ch2+4,ch3+4,ch4+4,ch5+4);
    return 0;
}

但是我们要尽可能寻求更加普遍的一个算法,以至于让我们自己输入的时候,也能保证每个字母都可以加4之后,准确输出,应该怎么办呢?

其实应该考虑的字母只有四个,w x y z,我们知道,在26个英文子母中,a与a的距离是零,b与a的距离是1,z与a的距离是25,所以26个英文字母和a距离的范围是0~25,且用自身的ASCII码减去a的ASCII码就是与字母a的距离,但是w加上4之后再减去a的ASCII码就是26了,与a距离是26的字母?我们刚刚已经说过了,最大与a的距离也就是25,这里的26应该怎么理解,我们实际上知道w加上4之后就应该是a,0~25是26个英文字母,26~51是下一轮26个英文字母,这里的26不妨理解成下一轮循环的第一个,也就是a,26与26距离为0,所以26就是a,同样x加上4减去a的ASCII码后就是27,减去26后剩下1,所以就是距离a一个位置,就是b了,

#include <stdio.h>
int main()
{
    char s[11];                             //定义一个长度为10的字符串(注意有结尾符)
    gets(s);                                //输入字符串
    for (int i = 0; s[i] != '\0'; i++)      //循环到结尾符'\0'时停止循环
    {
        if (s[i] >= 'A' && s[i] <= 'Z')             //判断是否为大写字母
        {
            s[i] = (s[i] + 4 - 'A') % 26 + 'A';     //大写字母后移
        }
        if (s[i] >= 'a' && s[i] <= 'z')             //判断是否为小写字母A
        {
            s[i] = (s[i] + 4 - 'a') % 26 + 'a';     //小写字母后移
        }
    }
    puts(s);                                //输出字符串
    return 0;
}

当然了,这里还可以进入更深入的思考,就是我们考虑字母并不是向后移动4位,而是移动更大数目,这时候就不是第二轮循环了,就可能是第三轮第四轮循环,这种思路在数据结构的队列中有出现,建议继续学习数据结构的小伙伴将此题目收藏起来,到时候会有更大收获

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:38:43  更:2022-04-01 23:41:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:43:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码