字符串加解密/华为机试(C/C++)

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/thecentry。 https://blog.csdn.net/thecentry/article/details/82527914

题目描述

1、对输入的字符串进行加解密,并输出。

2加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

3、解密方法为加密的逆过程。

接口描述:

    实现接口,每个接口实现1个基本操作:

void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出

说明:

1、字符串以\0结尾。

2、字符串最长100个字符。

int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出

说明:

1、字符串以\0结尾。

    2、字符串最长100个字符。

输入描述:

输入说明
输入一串要加密的密码
输入一串加过密的密码

输出描述:

输出说明
输出加密后的字符
输出解密后的字符

示例1

输入

abcdefg
BCDEFGH

输出

BCDEFGH
abcdefg

代码:

//第二十八题  字符串加解密
#include<iostream>
#include<string>
using namespace std;
string Encrypt(string str)
{
	string toReturn;
	size_t nLength = str.length();
	for (int i = 0; i < nLength; i++)
	{
		if (isupper(str[i]))
		{
			if (str[i] == 'Z')
				toReturn += 'a';
			else
				toReturn += (str[i] + 33);	
		}
		else if(islower(str[i]))
		{
			if (str[i] == 'z')
				toReturn += 'A';
			else
				toReturn += (str[i] - 31);	
		}
		else
		{
			if (str[i] < '9')
				toReturn += (str[i] + 1);
			else
				toReturn += '0';
		}
	}
	return toReturn;
}
string unEncrypt(string str)
{
	string toReturn;
	size_t nLength = str.length();
	for (int i = 0; i < nLength; i++)
	{
		if (isupper(str[i]))
		{
			if (str[i] == 'A')
				toReturn += 'z';
			else
				toReturn += (str[i] + 31);	
		}
		else if(islower(str[i]))
		{
			if (str[i] == 'a')
				toReturn += 'Z';
			else
				toReturn += (str[i] - 33);	
		}
		else
		{
			if (str[i] > '0')
				toReturn += (str[i] - 1);
			else
				toReturn += '9';
		}
	}
	return toReturn;
}
int main()
{
	string str1, str2;
	while (cin >> str1 >> str2)
	{
		cout << Encrypt(str1).c_str() << endl;
		cout << unEncrypt(str2).c_str() << endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/thecentry/article/details/82527914