【发布时间】:2016-12-10 10:04:55
【问题描述】:
我已经处理了许多关于 Vigenere 问题的堆栈和 reddit 问题。我差点搞明白了,我可以尝尝!
过去几个小时我一直在解决 BaZ 密钥的问题,并准备好拔掉头发。我的 cs50 支票返回:
:(使用“BaZ”作为关键字将“BaRFoo”加密为“CaQGon”
\预期输出,但不是“CBzSREpon\n”
我已经检查了密钥是否为大写和小写,并且已尽可能合乎逻辑地完成所有操作。在这一点上,我已经盯着我的屏幕太久了,我错过了一些东西。
这是我的代码:
for (i = 0, l = strlen(p); i < l; i++)
{
if (isalpha(p[i]))
{
if (isupper(p[i]) && isupper(k[n]))
{
int c = (p[i] - 65 + ((k[n]) - 65)) % 26;
printf("%c", c + 65);
n++;
}
if (isupper(p[i]) && islower(k[n]))
{
int c = (p[i] - 65 + (k[n] - 97)) % 26;
printf("%c", c + 65);
n++;
}
if (islower(p[i]) && islower(k[n]))
{
int c = (p[i] - 97 + (k[n] - 97)) % 26;
printf("%c", c + 97);
n++;
}
if (islower(p[i]) && isupper(k[n]))
{
int c = (p[i] - 97 + ((k[n]) - 65)) % 26;
printf("%c", c + 97);
n++;
}
if (n == g)
n = 0;
}
if (!isalpha(p[i]))
{
printf("%c", p[i]);
}
}
printf("\n");
return 0;
我错过了什么?在我秃顶之前请有人帮帮我!
【问题讨论】: