-6

我已经盯着这个问题好几个星期了,我什么都没有!它不起作用,我知道这么多,但我不知道为什么或出了什么问题。我确实知道开发人员对我突出显示的行吐出了“错误:预期的表达”,但实际上这只是冰山一角。如果有人知道如何修复其中的任何一小部分,我将不胜感激!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <cs50.h>
#include <ctype.h>

int main(int argc, char *argv[]) 
{

    //Get the key
    if (argc != 2 || atoi(argv[1]) < 0)
    {
        printf("Usage: ./caesar k");
        return 1;
    }

    int key = atoi(argv[1]);
    string plaintex;
    string plaintext = GetString();

    for (int i = 0, n = strlen(plaintext); n < i; i++)
    {
        if (plaintext[i] > 'A' && plaintext[i] <= 'Z')
        {
            plaintext[i] = (plaintext[i] - 'A' + key) % 26 + 'A';
        }
    }  
    for (int i = 0, n = strlen(plaintext); n < i; i++)
    {           
        if (plaintext[i] >= 'A' && plaintext[i] >= 'Z')  // Highlighted line
        {
            plaintext[i] = (plaintext[i] - 'A' + key) % 26 + 'A';
        }
        else if (plaintext[i] >= 'a' && plaintext[i] < 'z')
        {
            plaintext[i] = (plaintext[i] - 'a' + key) % 26 + 'a';
        }
        else
        {
            printf("%c\n", plaintext[i]);
        }
    }
    return 0;
}
4

2 回答 2

2
if (plaintext[i] >= 'A' && plaintext[i] >= 'Z')

应该

if (plaintext[i] >= 'A' && plaintext[i] <= 'Z')
于 2014-02-25T07:57:08.953 回答
0

A符号表索引的重要性低于Z. 最有可能A== 65 和Z== 90。

if (plaintext[i] >= 'A' && plaintext[i] >= 'Z')

您是在说“如果某物大于 65 并且也大于 90”。这个逻辑没有任何意义,这与说“如果某物大于 90”是一样的。

你可能是说

if (plaintext[i] >= 'A' && plaintext[i] <= 'Z')
于 2014-02-25T07:58:56.353 回答