You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串转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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:03:30