#include <stdio.h> void test7(); int main(){ test7(); return 0; } void test7() { printf("\n==================================测试7==================================\n"); do { char str[200], str1[200], str2[200];//定义三个字符串 unsigned int pass = 0;//定义密码 printf("\n请输入一段明文:"); scanf("%[^\n]", &str);//输入回车结束 getchar();//消除回车缓存 printf("你输入的明文是:"); //'\0'字符串结束符 for (int i = 0; str[i] != '\0';) { //历遍检查所有字符 printf("%c", str[i++]);//打印字符 } printf("\n请输入密码(一个英文字母):"); scanf("%d", &pass);//输入密码 if (pass > 27)pass %= 27;//密码求余0-26 printf("正在加密#########\n"); for (int i = 0; str[i] != '\0'; i++) {//判读字符串是否结束str[i] != '\0'; if (i % 3 == 0) {//i求余 三次密码+1 pass++; if (pass > 27)pass %= 27;//密码大于27求余 } if (str[i] >= 'A' && str[i] <= 'z') {//判断是否为英文字符范围 if (str[i] - pass >= 'A')str1[i] = str[i] - pass;//如果字符-密码 加密字符=大于字符A则字符减密码 else str1[i] = 'z' - ('A' - (str[i] - pass));//否则 加密字符=最大字符z减字符减密码的倒序字符 } else str1[i] = str[i];//判断不为英文字母范围 加密字符=明文字符 //printf("%c对应%c\n",str[i],str1[i]); str1[i + 1] = '\0';//最后给加密字符结束符号 } printf("密文是:%s\n", str1);//最后打印出加密字符串 printf("\n请输入密码(一个英文字母):"); scanf("%d", &pass);//输入密码 if (pass > 27)pass %= 27;//密码求余 0-26 printf("正在解密#########\n"); for (int i = 0; str1[i] != '\0'; i++) {//判读字符串是否结束str[i] != '\0'; if (i % 3 == 0) {//三次密码+1 pass++; if (pass > 27)pass %= 27;//求余 } if (str1[i] >= 'A' && str1[i] <= 'z') {//密文范围 if (str1[i] + pass <= 'z')str2[i] = str1[i] + pass;//判断字符加密码是否大于;z else str2[i] = ((str1[i] + pass) - 'z') + 'A';//不在该范围 } else str2[i] = str1[i];//其余字符不变 str2[i + 1] = '\0'; // printf("%c对应%c\n",str1[i],str2[i]); } printf("\n明文是:%s\n", str); printf("密文是:%s\n", str1); printf("解密是:%s\n", str2); printf("\n输入任意键退出回车继续:"); } while (getchar() == '\n'); } |
C语言英文加密解密
相关推荐
标签:C语言
留言与评论(共有 0 条评论) |