我在网上发现了这个凯撒密码加密代码,我试图了解它是如何工作的
#include<stdio.h>
int main()
{
char message[100], ch;
int i, key;
printf("Enter a message to encrypt: ");
gets(message);
printf("Enter key: ");
scanf("%d", &key);
for(i = 0; message[i] != '\0'; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = ch + key;
if(ch > 'z'){
ch = ch - 'z' + 'a' - 1;
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch + key;
if(ch > 'Z'){
ch = ch - 'Z' + 'A' - 1;
}
message[i] = ch;
}
}
printf("Encrypted message: %s", message);
return 0;
}
if(ch >= 'a' && ch <= 'z')
的含义
就像c包括字母作为一个数组或什么或它如何知道该字母是b或其他?
将int添加到ch = ch + key;
这个数学事物ch = ch - 'Z' + 'A' - 1;
非常感谢
答案 0 :(得分:0)
代码会为每个输入的字符添加一定的值(key
),并在a-z
范围内“旋转”该字符,如果是大型上限,则A-Z
如果是大上限。
在C中,每个单个字符都有一个隐式ascii/int
值,比较运算符用于判断输入的字符是否在字符集a-z
中(彼此对齐)或者是否它位于A-Z
的集合中,它们也跟在一起。
如果输入的字符加上key
“超过”f.e,其余代码将处理环绕。 z
或Z
并通过减去'z'
的值并添加'a' -1
的值来循环它,以便生成的char再次位于{{{{}}的选定范围内1}}或a-z