字符串转char数组后模运算结果异常,求技术解答
问题原因及解决方法
你的问题核心是混淆了字符和数字的取值:
当输入1234时,array[0]存储的是字符'1',它的ASCII码值是49,不是你以为的数字1。代入公式后实际计算的是(49 +7) %10 = 56%10=6,这就是结果不符的原因。
修正方案
将字符转换为对应数字,只需减去字符'0'的ASCII值(数字字符的ASCII码是连续的,'0'对应48,'1'对应49,以此类推)。修改关键代码行即可:
char* array{}; string digit4; cout << "Enter a 4 digit-integer : " << endl; cin >> digit4; cout << "The 4 digit-integer you have entered is : " << digit4 << endl; array = &digit4[0]; cout << "Digit 1 is : " << array[0] << endl; // 修正:先把字符转成数字再计算 int digit1 = ((array[0] - '0') + 7) % 10; cout << digit1 << endl; return 0; // 补充完整return语句
这样输入1234时,array[0]-'0'会得到数字1,计算(1+7)%10=8,和预期结果一致。
内容的提问来源于stack exchange,提问作者Takirin
相关产品推荐
相关产品推荐

