我刚接触C++,学了一个多月。我对Python有初级的了解,比如创建列表、修改列表、循环等。我不知道Python中的一些C++代码。
我正在为一个学校班级制作一个节目(创意节目(。这是我代码的一部分(底部描述(:
int number, new_one, num_letter;
char one;
cout << "You chose to encypher a messagenPlease 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
时,104
(h
的ASCII代码(应与3
相加,得到107
,然后我将其static_cast
转换为char
值。
但是,当我添加h
和3
时,它不是创建107
,而是创建155
。其他变量也是如此。我尝试了cout
’、static_cast<int>(one)
(在本例中为字母h
(和number
(即3
(。他们打印了CCD_ 28和CCD_。
但是,当我将这两个值相加时,它会打印155
。为什么会发生这种情况?
这是我的解决方案。希望它能有所帮助!
#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 messagenPlease 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;
}