|
|
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。
本帖最后由 48910155 于 2023-4-2 07:34 编辑
[mw_shl_code=c,true]#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 != '\0';) { //历遍检查所有字符
printf("%c", str[i++]);//打印字符
}
printf("\n请输入密码(一个英文字母):");
scanf("%d", &pass);//输入密码
if (pass > 27)pass %= 27;//密码求余0-26
printf("正在加密#########\n");
for (int i = 0; str != '\0'; i++) {//判读字符串是否结束str != '\0';
if (i % 3 == 0) {//i求余 三次密码+1
pass++;
if (pass > 27)pass %= 27;//密码大于27求余
}
if (str >= 'A' && str <= 'z') {//判断是否为英文字符范围
if (str - pass >= 'A')str1 = str - pass;//如果字符-密码 加密字符=大于字符A则字符减密码
else str1 = 'z' - ('A' - (str - pass));//否则 加密字符=最大字符z减字符减密码的倒序字符
} else str1 = str;//判断不为英文字母范围 加密字符=明文字符
//printf("%c对应%c\n",str,str1);
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 != '\0'; i++) {//判读字符串是否结束str != '\0';
if (i % 3 == 0) {//三次密码+1
pass++;
if (pass > 27)pass %= 27;//求余
}
if (str1 >= 'A' && str1 <= 'z') {//密文范围
if (str1 + pass <= 'z')str2 = str1 + pass;//判断字符加密码是否大于;z
else str2 = ((str1 + pass) - 'z') + 'A';//不在该范围
} else str2 = str1;//其余字符不变
str2[i + 1] = '\0';
// printf("%c对应%c\n",str1,str2);
}
printf("\n明文是:%s\n", str);
printf("密文是:%s\n", str1);
printf("解密是:%s\n", str2);
printf("\n输入任意键退出回车继续:");
} while (getchar() == '\n');
}[/mw_shl_code]
|
-
|