讨论/题目交流/新手求救!!!!/
新手求救!!!!

加密.jpg

展开讨论
共 2 个讨论

C/C++版本的解法:
(我C语言是刚学的,所以代码写的不好,但是解法思想大致就是这样)

#include <stdio.h>
#include <string.h>

// 加密算法
// origin: 明文字符数组
// result: 密文字符数组
void encryption(const char* origin, char* result) {
    int ch;
    // 循环遍历传入的字符数组
    for (int index = 0; index < strlen(origin); index++) {
        ch = origin[index];
        // 如果当前遍历的字符在A(65)和Z(90)之间,则进行加密
        if (ch >= 65 && ch < 91) {
            ch += 5;
            // 如果加密后超过Z(90),则减去字母数量(26),使超出的部分从A(65)开始计
            if (ch > 90) {
                ch -= 26;
            }
        }
        // 如果当前遍历的字符在a(97)和z(122)之间,则进行加密
        if (ch >= 97 && ch < 123) {
            ch += 5;
            // 如果加密后超过z(122),则减去字母数量(26),使超出的部分从a(97)开始计
            if (ch > 122) {
                ch -= 26;
            }
        }
        // 将字符存入结果集
        result[index] = (char) ch;
    }
}

int main() {
    const char content[20] = {'H', 'e', 'l', 'l', 'e', ' ', 'W', 'o', 'r', 'l', 'd'};
    char result[20];
    encryption(content, result);
    puts("加密前:");
    puts(content);
    puts("加密后:");
    puts(result);
    return 0;
}

Python版:

def encryption(origin: str) -> str:
    # 创建结果数组
    result = []
    # 遍历传入的字符串中的每个字符
    for char in origin:
        # 将当前遍历的字符转换为对应的ASCII码(数字)
        ch = ord(char)
        # 如果当前遍历的字符在A(65)和Z(90)之间,则进行加密
        if 65 <= ch < 91:
            ch += 5
            # 如果加密后超过Z(90),则减去字母数量(26),使超出的部分从A(65)开始计
            if ch > 90:
                ch -= 26
        # 如果当前遍历的字符在a(97)和z(122)之间,则进行加密
        if 97 <= ch < 123:
            ch += 5
            # 如果加密后超过z(122),则减去字母数量(26),使超出的部分从a(97)开始计
            if ch > 122:
                ch -= 26
        # 将处理后的ASCII码转换为字符,并存入结果数组中
        result.append(chr(ch))
    # 将结果转换为字符串,并返回
    return ''.join(result)


if __name__ == '__main__':
    content = "Hello World"
    encode = encryption(content)
    print("加密前:")
    print(content)
    print("加密后:")
    print(encode)
1

给你整个Java的吧

public static String encryption(String str) {
		char[] chars = str.toCharArray();
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] >= 'a' && chars[i] <= 'z') {
				chars[i] = (char) ((chars[i] - 97 + 5) % 26 + 97);
			} else if (chars[i] >= 'A' && chars[i] <= 'Z') {
				chars[i] = (char) ((chars[i] - 65 + 5) % 26 + 65);
			}
		}
		return String.valueOf(chars);
	}