当前输入和输出,代码如下:
预期输出:
当我编译并运行该程序并专门输入4位数字测试(例如“ 9876”)时,我的回答实际上是4个方框。答案应该是3197,但我真的不知道该怎么办。我认为数据类型存在问题,但我真的不确定如何解决此问题。
输入数据:
9876
输出数据:
????
预期数据:
3197
到目前为止,这是我的代码:
#include <iostream> //access input output related code
#include <string>
#include <math.h>
#include <sstream>
#include <ctype.h>
#include <iomanip>
using namespace std; // use the C++ standard namespace which includes cin and
// cout
int main() {
string encodednumber, decodednumber;
int temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8;
char initialnumber[10];
cout << "Please enter a number: " << endl;
cin.getline(initialnumber, 10);
string str = initialnumber;
int numlength = str.length();
cout << "Number contains " << numlength << " digits" << endl;
switch (numlength) {
case 4:
temp1 = initialnumber[0];
initialnumber[0] = ((temp1 + 4) % 10);
temp2 = initialnumber[1];
initialnumber[1] = ((temp2 + 3) % 10);
temp3 = initialnumber[2];
initialnumber[2] = ((temp3 + 2) % 10);
temp4 = initialnumber[3];
initialnumber[3] = ((temp4 + 1) % 10);
encodednumber = initialnumber;
cout << "\nThe encoded number is " << encodednumber << endl;
break;
default:
cout << "Not a valid input, re enter the number" << endl;
}
return 0;
}
答案 0 :(得分:7)
是的,这是数据类型。您将忽略char
和int
之间的区别,并假设您可以在它们之间自动进行转换。
要将数字字符转换为相应的整数,必须减去'0'
temp1 = initialnumber[0] - '0';
要将整数转换为char,必须添加'0'
。
initialnumber[0] = ((temp1 + 4) % 10) + '0';
所有字符均编码为整数。保证数字“ 0”到“ 9”由连续的整数编码(“ 0”的最小值)。因此,从字符中减去'0'
会将编码后的值转换为相应的整数值。