尝试使用多个密钥进行凯撒密码解密从密钥 9 而不是 1 开始

Trying multiple keys for Caesar cipher decryption starts with key 9 instead of 1

我不知道我的代码有什么问题。它没有像预期的那样运行。我只想使用if语句中的条件对我的cstring中的字符进行加密,并在每次迭代密钥(密钥从1到100)时输出所有结果,但即使迭代也无法正常工作。它从 9 开始。我在编译过程中也收到以下警告:

[Warning] multi-character character constant [-Wmultichar] 
[Warning] overflow in implicit constant conversion [-Woverflow]

输出示例(如您所见,它从 9 而不是 1 开始迭代,然后上升到 100):

Encrypted using key (9) : n
Encrypted using key (10) : o
Encrypted using key (11) : p
Encrypted using key (12) : q
Encrypted using key (13) : r
Encrypted using key (14) : s
Encrypted using key (15) : t
Encrypted using key (16) : u
Encrypted using key (17) : v
Encrypted using key (18) : w
Encrypted using key (19) : x
Encrypted using key (20) : y
Encrypted using key (21) : z
Encrypted using key (22) : {
Encrypted using key (23) : |
Encrypted using key (24) : }
Encrypted using key (25) : ~
Encrypted using key (26) :
Encrypted using key (27) : !

然后代码:

#include <iostream>
#include <cstring>
using namespace std;

string myfunction(char a[]);


int main()
{   
    //char a[] = ":mmZ\dxZmx]Zpgy";
    //char a[] = {':','m','m','Z',92,'d','x','Z','m','x',']','Z','p','g','y','[=12=]'};
    //char a[] = {58,109,109,90,92,100,120,90,109,120,93,90,112,103,121,0};
    char a[] = {'e','o','i','/0'};
    cout << myfunction(a) << endl;

    return 1;
    system("pause");
}

string myfunction(char a[])
{   
    string encrypted;

    for (int i=0; i<strlen(a)-1; i++){
        cout << " Taking first character for encryption : " << a[i] << endl;
        for (int key =1; key<=100; key++)
        {
            if (a[i]+key > 126){
                encrypted= (a[i]+key)-95;
                cout << "Encrypted using key (" <<key<<") : " << encrypted << endl;}
            else{
                encrypted= a[i]+key;
                cout <<  "Encrypted using key (" <<key<<") : " << encrypted << endl;}
        }
    }

    return ("\nGood Job!");
}
char a[] = {'e','o','i','/0'};   

你是说

char a[] = {'e','o','i','[=11=]'};

这可能会修复您的警告。我不知道它是否能解决您的问题 - 因为您没有提出明确的问题。