C++信息学奥赛1137:加密的病历单

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main() {
	string arr;
	// 输入一行字符串
	getline(cin, arr);
	string btt;
	for(int i=arr.length()-1;i>=0;i--){
		char a=arr[i]+3; // 对当前字符进行加密,向后移动三位
		if(arr[i]>=88 and arr[i]<=90) { // 如果当前字符是'X'、'Y'、'Z'中的一个
			a=arr[i]-23; // 解密时向前移动23位
		}else if(arr[i]>=120 and arr[i]<=122){ // 如果当前字符是'x'、'y'、'z'中的一个
			a=arr[i]-23; // 解密时向前移动23位
		}
		if(a>90){ // 如果加密后的字符超过了大写字母范围
			a-=32; // 将其转换为小写字母
			cout<<a; // 输出解密后的字符
		}else{
			a+=32; // 将加密后的字符转换为大写字母
			cout<<a; // 输出解密后的字符
		}
	}
	return 0;
}

该段代码实现了一个简单的字符加密和解密功能。首先,通过getline(cin, arr)语句从标准输入读取一行字符串。然后,从字符串的最后一个字符开始,向前遍历。对于每个字符,使用char a=arr[i]+3将其往后移动三位。如果字符是大写字母'X'、'Y'、'Z'中的一个,则将其解密后的字符设为原字符减去23;如果字符是小写字母'x'、'y'、'z'中的一个,则同样将其解密后的字符设为原字符减去23。如果加密后的字符超过了大写字母范围,则将其转换为小写字母;否则,将其转换为大写字母。最后,输出解密后的字符。

相关推荐
better_liang5 分钟前
每日Java面试场景题知识点之-分布式事务处理
java·微服务·面试·springcloud·分布式事务
执笔论英雄28 分钟前
Slime异步原理(单例设计模式)4
开发语言·python·设计模式
止观止2 小时前
C++20 Concepts:让模板错误信息不再“天书”
c++·c++20·编程技巧·模板编程·concepts
L***d6702 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
e***74952 小时前
Modbus报文详解
服务器·开发语言·php
凌波粒2 小时前
Springboot基础教程(3)--自动装配原理/静态资源处理/欢迎页
java·spring boot·后端
lly2024062 小时前
ASP 发送电子邮件详解
开发语言
小徐敲java2 小时前
python使用s7协议与plc进行数据通讯(HslCommunication模拟)
开发语言·python
likuolei2 小时前
XSL-FO 软件
java·开发语言·前端·数据库
凌波粒2 小时前
SpringBoot基础教程(2)--yaml/配置文件注入/数据校验/多环境配置
java·spring boot·后端·spring