【题目链接】

ybt 1137:加密的病历单
OpenJudge NOI 1.7 12:加密的病历单

【题目考点】

1. 字符串处理

【解题思路】

加密过程有三个工序:循环左移,逆序存储,大小写反转。题目中给出的是加密过程,而问题是给出加密后的字符串,让我们解密。所以我们实际要做的解密过程是:循环右移,逆序存储,大小写反转。

  1. 循环右移3位
    以小写字母为例,先将字母a~z转为数字0~25,而后将该值加3,而后模26,即可得到移位后字母的值,最后再将该值转为字母。
    大写字母同理。
    也可以写判断语句实现。
  2. 逆序存储
    从前向后遍历一半字符串,交换对应字符
  3. 大小写反转
    字符c表示一个字母
    大写转小写:c = c - 'A' + 'a'tolower(c)
    小写转大写:c = c - 'a' + 'A'toupper(c)
    其中tolower(),toupper()是<cctype>中的函数

【题解代码】

解法1:用函数实现三道工序

#include <bits/stdc++.h>
using namespace std;
void reverse(char s[])//倒序
{int len = strlen(s);for(int i = 0; i < len/2; ++i)swap(s[i], s[len - 1 - i]);
}
void changeCase(char s[])//大小写转换
{int len = strlen(s);for(int i = 0; i < len; ++i){if(isupper(s[i]))s[i] = tolower(s[i]);else if(islower(s[i]))s[i] = toupper(s[i]);}
}
void moveRight(char s[])//字母右移3位
{int len = strlen(s);for(int i = 0; i < len; ++i){if(isupper(s[i]))s[i] = (s[i] - 'A' + 3) % 26 + 'A';else if(islower(s[i]))s[i] = (s[i] - 'a' + 3) % 26 + 'a';}
}
int main()
{char s[55];cin>>s;moveRight(s);changeCase(s);reverse(s);cout<<s;return 0;
}

解法2:逆序遍历,构造结果字符串

逆序遍历,如果遇到小写字母,变为右移3个位置后的大写字母。如果遇到大写字母,变为右移3个位置后的小写字母。


#include<bits/stdc++.h>
using namespace std;
int main()
{char s[55], r[55], c;//s:输入的字符串 r:结果字符串cin>>s;int len = strlen(s), r_i = 0;//r_i:数组r的下标for(int i = len - 1; i >= 0; i--)//由于是逆序存储,所以从后向前遍历{c = s[i];if(c >= 'a' && c <= 'z')//字母向右移3个位置 并转换大小写 c = (c - 'a' + 3) % 26 + 'A';else if(c >= 'A' && c <= 'Z')c = (c - 'A' + 3) % 26 + 'a';r[r_i++] = c; } r[r_i] = '\0';cout<<r;return 0;
}

信息学奥赛一本通 1137:加密的病历单 | OpenJudge NOI 1.7 12相关推荐

  1. 信息学奥赛一本通 1116:最长平台 | OpenJudge NOI 1.9 12:最长平台 | 洛谷 B2097 最长平台

    [题目链接] ybt 1116:最长平台 OpenJudge NOI 1.9 12:最长平台 洛谷 B2097 最长平台 [题目考点] 1. 数组中做统计 2. 求最大值 [解题思路] 解法1:遍历并 ...

  2. 信息学奥赛一本通 1050:骑车与走路 | OpenJudge NOI 1.4 12

    [题目链接] ybt 1050:骑车与走路 OpenJudge NOI 1.4 12:骑车与走路 [题目考点] 1. 两浮点型量判断相等 由于浮点型量在内存中以二进制形式表示,很多数据并不能精确表示( ...

  3. 信息学奥赛一本通 1227:Ride to Office | OpenJudge NOI 4.6 2404:Ride to Office

    [题目链接] ybt 1227:Ride to Office OpenJudge NOI 4.6 2404:Ride to Office 原题是英文题,虽说两题题意相同,但一本通网站没有对该问题进行直 ...

  4. 信息学奥赛一本通 1404:我家的门牌号 | OpenJudge NOI 2.1 7649:我家的门牌号 | 小学奥数 7649

    [题目链接] ybt 1404:我家的门牌号 OpenJudge NOI 2.1 7649:我家的门牌号 OpenJudge NOI 小学奥数 7649:我家的门牌号 注意:一本通OJ和OpenJud ...

  5. 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命

    [题目链接] ybt 1229:电池的寿命 OpenJudge NOI 4.6 2469:电池的寿命 [题目考点] 1. 贪心 [解题思路] 1. 贪心选择性质的证明 电池分配主要有两步, 第一步:将 ...

  6. 信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序

    [题目链接] ybt 1181:整数奇偶排序 OpenJudge NOI 1.10 06:整数奇偶排序 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将奇数和偶数分开,分别排序 ...

  7. 信息学奥赛一本通 1223:An Easy Problem | OpenJudge NOI 4.6 1455:An Easy Problem

    [题目链接] ybt 1223:An Easy Problem OpenJudge NOI 4.6 1455:An Easy Problem [题目考点] 1. 数制 2. 枚举 [解题思路] 解法1 ...

  8. 信息学奥赛一本通 1177:奇数单增序列 | OpenJudge NOI 1.10 02:奇数单增序列

    [题目链接] ybt 1177:奇数单增序列 OpenJudge NOI 1.10 02:奇数单增序列 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 题目中说的是要先取出奇数,再对奇数 ...

  9. 信息学奥赛一本通 1168:大整数加法 | OpenJudge NOI 1.6 10:大整数加法

    [题目链接] ybt 1168:大整数加法 OpenJudge NOI 1.6 10:大整数加法 [题目考点] 1. 高精度 考察:高精加高精 高精度计算讲解 [解题思路] 注意:输入可能有多余的前导 ...

最新文章

  1. 文件系统与NoSQL分布式存储技术对比
  2. mysql8.0限制用户只能访问指定数据库,限制用户只有某种权限
  3. 【专升本计算机】甘肃省普通高等学校专升本考试计算机全真模拟试卷(一)
  4. python模块(6)-Pandas 简易使用教程
  5. hortonworks/registry : ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
  6. php 基础知识 常见面试题
  7. android服务常驻后台,android-如何始终在后台运行服务?
  8. KVM的概念和云计算
  9. 永川机器人五小区_永川清掏化粪池报价---蚂众蚁
  10. TypeError: Cannot read property ‘forceUpdate‘ of undefined
  11. [看过不再忘]详细解析chmod修改文件权限
  12. 啊哈C语言第四章 第九节
  13. 形如1/(a+bsinx)的积分公式的证明
  14. Spring Bean生命周期总结
  15. java实用教程第五版_java2实用教程(第5版)重要点及遗漏点(一)
  16. android中APK开机自动运行
  17. HTML实现在线代码格式化、美化、加密、解密、压缩、一键转JavaScript功能工具-toolfk程序员工具网
  18. solr 通过DIH方式导入创建索引
  19. FreeMarker教程---Freemarker操作字符串
  20. Sweet Butter 香甜的黄油

热门文章

  1. [导入]Linux下载工具利器ProZilla和ProzGUI
  2. 腾讯阿里都在用!机器学习最热研究方向入门,附学习路线图
  3. STM32之DAC例程
  4. 给你1分钟,回答下RabbitMQ如何保证消息不丢?
  5. SegmentFault无法访问,因出现违规内容被网警要求停机!
  6. 律师坚称技术无罪:“钉钉打卡神器”开发者二审被改判四年
  7. CPU虚拟化系列文章之虚拟机切入和退出
  8. 如此沙雕的代码注释,还是程序员会玩!
  9. Activiti 5.3:子流程(subProcess)
  10. Spring Boot参数校验