华为OJ:字符串加解密

题目描述

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个字符。

// 最后一个单词的长度.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <string>
#define N 100
using namespace std;

void Encrypt(char aucPassword[], char aucResult[])
{
	int i = 0;
	while (aucPassword[i] != '\0')
	{
		if (aucPassword[i] >= 'a' && aucPassword[i] <= 'z')
		{
			aucResult[i] = (aucPassword[i] - 'a' + 1) % 26 + 'A';
		}
		else if(aucPassword[i] >= 'A' && aucPassword[i] <= 'Z')
		{
			aucResult[i] = (aucPassword[i] - 'A' + 1) % 26 + 'a';
		}
		else if (aucPassword[i] >= '0' && aucPassword[i] <= '9')
		{
			aucResult[i] = (aucPassword[i] - '0' + 1) % 10 + '0';
		}
		i++;
	}
	aucResult[i] = '\0';
	cout << aucResult << '\n';

}

int unEncrypt(char result[], char password[])
{
	int i = 0;
	while (result[i] != '\0')
	{
		if (result[i] >= 'a' && result[i] <= 'z')
		{
			password[i] = (result[i] - 'a' + 25) % 26 + 'A';
		}
		else if (result[i] >= 'A' && result[i] <= 'Z')
		{
			password[i] = (result[i] - 'A' + 25) % 26 + 'a';
		}
		else if (result[i] >= '0' && result[i] <= '9')
		{
			password[i] = (result[i] - '0' + 9) % 10 + '0';
		}
		i++;
	}
	password[i] = '\0';
	cout << password << '\n';
	return 0;
}

int main()
{
	char str1[N];
	char str2[N];
	while (cin >> str1 >> str2)
	{
		char result[N];
		Encrypt(str1, result);
		char passwd[N];
		unEncrypt(str2, passwd);
	}	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Doutd_y/article/details/82432080