在保留大小写的同时使用密钥加密文本?
Encrypt a text using a key while preserving the case?
任务:凯撒算法 (cipher (c)) 通过 "rotating" 每个字母按密钥 (k) 个位置对消息进行加密。
实现:ci = (pi+k)mod26
其中 ci 是 cipher,pi 是明文,k 是密钥。
我的伪代码:
- 从命令行参数获取密钥。
- 将密钥 (k) 转为整数。
- 提示用户输入纯文本 (pi)
- 对于每个纯文本字符,保留大小写(使用 C 中的 isalpha、isupper 和 islower 函数。
- 最后按键移动明文字符,例如 - "Go Home!" --- "Hp Ipnf!"(如果键 k =1,并保留字母的 upper/lower 大小写,! 保持为 ! ). ** 我正在为此苦苦挣扎。
- 打印ciphertext。
int main (int argc, string argv[]) //get key from command line argument
{
if (argc != 2 || atoi(argv[1]) < 0)
{
printf ("print valid key");
return 1;
}
int k = atoi(argv[1]);
string p = get_string(); //prompt for plaintext
for (int i=0, n = strlen(p); i < n; i++)
{ if (isalpha('p'))
{
if (isupper('p'))
{
printf ("%c", p[i]);
}
if (islower('p'))
{
printf ("%c", p[i]);
}
}
}
c[i]=(p[i]+k)%26;
printf ("%c", c[i]);
}
实际上,您编写的代码只是 return 您输入的纯文本的值
这个问题的逻辑是
c[i]=(p[i]+k)%26
你必须对大写和小写不同地应用这个公式
我可以给你一段代码,这将帮助你解决问题
int l = (p[ i ] -65+k)%26
printf("%c",l+65);
这里k是key
在这里,我使用了字母的 ASCII 值,因为 ASCII 值是整数,我使用了一个整数来存储值并应用给定的操作。
我使用了 65,因为大写 'A' 的 ASCII 值是 65。
因为我们必须打印字符,所以我们使用 %c 来打印字符。
这是大写字母,你可以用小写字母做类似的事情
如果这个回答有帮助,请点击旁边的箭头
谢谢 :)
任务:凯撒算法 (cipher (c)) 通过 "rotating" 每个字母按密钥 (k) 个位置对消息进行加密。
实现:ci = (pi+k)mod26 其中 ci 是 cipher,pi 是明文,k 是密钥。
我的伪代码:
- 从命令行参数获取密钥。
- 将密钥 (k) 转为整数。
- 提示用户输入纯文本 (pi)
- 对于每个纯文本字符,保留大小写(使用 C 中的 isalpha、isupper 和 islower 函数。
- 最后按键移动明文字符,例如 - "Go Home!" --- "Hp Ipnf!"(如果键 k =1,并保留字母的 upper/lower 大小写,! 保持为 ! ). ** 我正在为此苦苦挣扎。
- 打印ciphertext。
int main (int argc, string argv[]) //get key from command line argument
{
if (argc != 2 || atoi(argv[1]) < 0)
{
printf ("print valid key");
return 1;
}
int k = atoi(argv[1]);
string p = get_string(); //prompt for plaintext
for (int i=0, n = strlen(p); i < n; i++)
{ if (isalpha('p'))
{
if (isupper('p'))
{
printf ("%c", p[i]);
}
if (islower('p'))
{
printf ("%c", p[i]);
}
}
}
c[i]=(p[i]+k)%26;
printf ("%c", c[i]);
}
实际上,您编写的代码只是 return 您输入的纯文本的值 这个问题的逻辑是 c[i]=(p[i]+k)%26 你必须对大写和小写不同地应用这个公式 我可以给你一段代码,这将帮助你解决问题
int l = (p[ i ] -65+k)%26
printf("%c",l+65);
这里k是key 在这里,我使用了字母的 ASCII 值,因为 ASCII 值是整数,我使用了一个整数来存储值并应用给定的操作。 我使用了 65,因为大写 'A' 的 ASCII 值是 65。 因为我们必须打印字符,所以我们使用 %c 来打印字符。 这是大写字母,你可以用小写字母做类似的事情 如果这个回答有帮助,请点击旁边的箭头 谢谢 :)