c++ char + int更改char值

kzmpq1sx  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(236)

我是C新手,学了一个多月。我有Python的初级知识,比如创建列表,修改列表,循环等等。我不知道一些我在Python中知道的C代码。
我正在为一个学校班级制作一个程序(创意程序)。这是我代码的一部分(描述在底部):

int number, new_one, num_letter;
char one;

cout << "You chose to encypher a message\nPlease choose an integer between 1-25:";
cin >> number;

cout << "How many letters are in your word?";
cin >> num_letter;

if (num_letter == 1)
{
    cout << "Enter the first letter";
    cin >> one;

    new_one = one + number;

    cout << "Your encrypted message is '" 
         << static_cast<char>(new_one) 
         << "' with the code number of " 
         << number;

我正在编写一个程序,它可以对一条消息进行加密和解密。用户可以选择消息的字母数(最多10个,因为我还不知道如何在C中使用for-循环)。然后,他们选择一个整数。然后,他们输入字母,按Enter键,输入字母,并按Enter键输入消息中的字母数(我还不知道如何在C中将字符串分隔为字符)。
当用户输入他们的字母并点击Enter键时,我将这个字母cin >>到变量one中,这是一个char。然后,我将one添加到用户选择的number中,这样one的ASCII码就增加了number的值。
例如,当我为number输入3,为one的值输入h时,104h的ASCII码)应与3相加,得到107,然后我将static_cast转换为char值。
但是,当我把h3相加时,它创建的不是107,而是155。其他变量也是一样。我试着用coutstatic_cast<int>(one)(在这个例子中,是字母h)和number(就是3)相加。它们打印出1043
但是,当我把这两个值相加时,它会打印155。为什么会发生这种情况?

k10s72fa

k10s72fa1#

这是我的解决方案,希望对你有帮助!

#include <iostream>

using namespace std;

int main()
{
    int offset = 0;
    int num_with_offset;

    int size;
    
    // Gets offset from user
    do{
        cout << "You chose to encypher a message\nPlease choose an integer between 1-25: ";
        cin >> offset;
    } while (offset < 1 || offset > 25);
    
    // Gets letters in word
    do{
        cout << "Letters in word: ";
        cin >> size;
    } while(size < 0);
    
    // Given size, init arrays
    
    int number[size];
    char one[size];
    
    // Conversion from char to int
    for(int i = 0; i < (sizeof(one)/sizeof(one[0])); i++)
    {
        cout << "Enter character " << (i + 1) << ": ";
        cin >> one[i];
        num_with_offset = one[i] + offset;
        // Converts ASCII to integer and stores it into array
        number[i] = static_cast<int>(num_with_offset);
    }
    
    // Prints out the new encrypted message
    for(int j = 0; j < (sizeof(number)/sizeof(number[0])); j++)
    {
        cout << "Your encrypted message is: "
             << number[j] << " , with the code number: "
             << offset << "." << endl;
    }
    cout << endl << endl;
    return 0;
}

相关问题