1. 程式人生 > >華為OJ:字串加解密

華為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;
}