我写了我的代码,看起来不错,但是关于它的某些功能却无法正常工作,我也不知道为什么。这是一个凯撒密码,但没有给我期望的输出
int main(int key, char* argv[])
{
key = atoi(argv[1]);
string ptext = get_string("plaintext: ");
int len = strlen(ptext);
printf("%s %i\n", ptext, key);`
for (int i = 0; i < len; i++)
{
if (isalpha(ptext[i])){
if (ptext[i] >= 'a' && ptext[i] <= 'z')
{
if (ptext[i] + key > 'z')
{
printf("%c", 'a' + (key % 26)); //'a' is used to reset the ascii table so it use letters only
}
else{
printf("%c", ptext[i] + key);
}
if (ptext[i] >= 'A' && ptext[i] <= 'Z')
{
if (ptext[i] + key >= 'Z'){
printf("%c", (ptext[i] + (key % 26)) - 'z'); //'A' is used to reset the ascii table so it use letters only
}
else{
printf("%c", ptext[i] + key);
}
}
}
else{
printf("%c", ptext[i]);
}
}
}
}
答案 0 :(得分:0)
orderValue = parseInt(rawValue.replace(/$\./, ""))
时处理不正确。
ptext[i] + key > 'z'
不依赖于'a' + (key % 26)
ptext[i]
相反
if (ptext[i] + key > 'z') {
printf("%c", 'a' + (key % 26)); // Incorrect.
} else {
....
}
与int sum = (ptext[i] - 'a' + key)%26 + 'a';
printf("%c", sum);
类似。