code up 解密

题目描述

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

A-->Z        a-->z

B-->Y        b-->y

C-->X        c-->x

......          ......

即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。

思路:根据输入的字符串的字符ascII码判别大写小写字母和数字分别进行相应处理

//解密
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
		char a[26] = {'A','B','C','D','E','F','G','H',
					'I','J','K','L','M','N','O',
					'P','Q','R','S','T','U','V','W','X','Y','Z'};
					
		char b[26] = {'a','b','c','d','e','f','g','h',
					'i','j','k','l','m','n','o',
					'p','q','r','s','t','u','v','w','x','y','z'};
	int i; //循环变量
	string  ch;//字符串变量 

	//输入密文
	cin >> ch;
	//输入的字符长度
	int len = ch.length();
	
	//处理密文 
	for(i = 0; i < len; i++) // 元素个数循环
	{ 
		//不是数字时  57为9最大数字ascII码 
			if(65 <= ch[i] <= 90) //大写字母
			{	
				for(int j = 0; j < 26;j++) //和26个字母匹配
				{
					if(ch[i] == a[j]) //每个密码元素判定一次
					{
						ch[i] = a[26 - j - 1];
						break;//跳出当前循环
					}	
				} 
			} 
			if(97 <= ch[i] <= 122) //小写字母 
			{
				for(int j = 0; j < 26; j++)
				{
					if(ch[i] == b[j])
					{
						ch[i] = b[26 - j - 1];
					}
				}
			}	
	}
	//输出
		cout << ch << endl;
	
	return 0;	
} 


//数字0~9对应48~57, A~Z对应65~90, a~z对应97~122 

//if if顺序执行各个if都执行,if else if 满足前边条件就不向下执行了 


//小写字母变对应的大写字母加32;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值