题目:
1、对输入的字符串进行加解密,并输出。
2、加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
本题含有多组样例输入。
输入描述:
输入说明
输入一串要加密的密码
输入一串加过密的密码
输出描述:
输出说明
输出加密后的字符
输出解密后的字符
示例1
输入:
abcdefg BCDEFGH
输出:
BCDEFGH abcdefg
结果:

解题思路:
就是按照题目要求一个个比较,分成6个情况。
加密:0~8直接+1,9变为0。a~y(大小写转换之后+1)z(大小写转换后变成a)
解密:1~9直接-1,0变成9。b~z(大小写转换后-1)a(大小写转换后变成z)
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char encrypt[1024] = {};
char decode[1024] = {};
while(scanf("%s", encrypt) != EOF) {
scanf("%s", decode);
int encryLen = strlen(encrypt);
int decodeLen = strlen(decode);
/*加密*/
for(int i = 0; i < encryLen; i++) {
if(encrypt[i] >= '0' && encrypt[i] <='8') encrypt[i] += 1;
else if(encrypt[i] == '9') encrypt[i] = '0';
else if(encrypt[i] >= 'A' && encrypt[i] <= 'Y') encrypt[i] = encrypt[i] + ' ' + 1;
else if(encrypt[i] == 'Z') encrypt[i] = 'a';
else if(encrypt[i] >= 'a' && encrypt[i] <= 'y') encrypt[i] = encrypt[i] - ' ' + 1;
else if(encrypt[i] == 'z') encrypt[i] = 'A';
}
/*解密*/
for(int i = 0; i < decodeLen; i++) {
if(decode[i] >= '1' && decode[i] <='9') decode[i] -= 1;
else if(decode[i] == '0') decode[i] = '9';
else if(decode[i] >= 'B' && decode[i] <= 'Z') decode[i] = decode[i] + ' ' - 1;
else if(decode[i] == 'A') decode[i] = 'z';
else if(decode[i] >= 'b' && decode[i] <= 'z') decode[i] = decode[i] - ' ' - 1;
else if(decode[i] == 'a') decode[i] = 'Z';
}
printf("%s\n", encrypt);
printf("%s\n", decode);
memset(encrypt, '\0', 1024);
memset(decode, '\0', 1024);
}
return 0;
}
这篇博客详细介绍了如何使用C语言实现字符串的加密和解密功能。根据题目要求,加密规则涉及英文字母的后移和大小写转换,数字加1,其他字符保持不变。解密过程则是加密的逆操作。博主分享了具体的解题思路和代码实现,包括针对不同字符的处理逻辑。
1382

被折叠的 条评论
为什么被折叠?



