#include <stdio.h> #include <stdlib.h> #include <string.h> //#include <math.h> #define max 1000 #define row 100 #define col 100 #define N 8 /* 1、对输入的字符串进行加解密,并输出。 2、加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0; 其他字符不做变化。 3、解密方法为加密的逆过程。 本题含有多组样例输入。 */ void create_encrypt_table(char* s) { int i; for (i = 0; i < 256; i++) { if ((i >= 'a') && (i <= 'y')) { s[i] = i - ('a' - 'A') + 1; } else if ((i >= 'A') && (i <= 'Y')) { s[i] = i + ('a' - 'A') + 1; } else if (i == 'z') { s[i] = 'A'; } else if (i == 'Z') { s[i] = 'a'; } else if ((i >= '0') && (i <= '8')) { s[i] = i + 1; } else if (i == '9') { s[i] = '0'; } else { s[i] = i; } } s[i] = 0; return; } void create_decrypt_table(char* s) { int i; for (i = 0; i < 256; i++) { if ((i >= 'b') && (i <= 'z')) { s[i] = i - ('a' - 'A') - 1; } else if ((i >= 'B') && (i <= 'Z')) { s[i] = i + ('a' - 'A') - 1; } else if (i == 'a') { s[i] = 'Z'; } else if (i == 'A') { s[i] = 'z'; } else if ((i >= '1') && (i <= '9')) { s[i] = i - 1; } else if (i == '0') { s[i] = '9'; } else { s[i] = i; } } s[i] = 0; return; } int main() { char s[max]; char e[max]; char d[max]; //char ss[N][col]; int seq[N]; int cnt[N]; int ss[row][col]; int list[max]; int i = 0, j = 0, k = 0, l = 0, m = 0, n = 0; char a, b, c; int t = 0, x = 0, y = 0, z = 0; create_encrypt_table(e); create_decrypt_table(d); while (gets(s) != NULL) { for (i = 0; s[i] != 0; i++) { s[i] = e[s[i]]; } puts(s); gets(s); for (i = 0; s[i] != 0; i++) { s[i] = d[s[i]]; } puts(s); } return 0; }