You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C++多步骤谜题程序调试求助:步骤6始终返回负值

解决你的C++编程谜题问题:步骤6返回负值的原因及修正方案

嘿,我看到你在这个编程谜题上卡壳了,尤其是步骤6总是返回负值——咱们来一起把问题揪出来!

首先,先回顾一下谜题的要求,你会发现核心问题出在每一步运算都没有基于上一步的结果,你的代码里除了第一步,后面几步都错误地用了原始输入的x,而不是更新后的y,这就完全偏离了题目要求的运算流程。

你的代码里的错误点:

  • 步骤3(乘以2):你写的是 y = x * 2;,但应该用上一步得到的y,也就是 y = y * 2;
  • 步骤4(减4):同样,应该是 y = y - 4; 而不是 y = x - 4;
  • 步骤5(除以2):这里也应该用当前的y,即 y = y / 2; 而不是 y = x / 2;

这些错误导致你的运算流程完全走偏了,自然会得到错误的负值结果。

修正后的完整代码:

#include <iostream>
using namespace std;
int main() {
    int x;
    int y;
    cout << "Enter a number" << endl;
    cin >> x;
    y = x + 3;       // 步骤2:加3
    y = y * 2;       // 步骤3:乘以2
    y = y - 4;       // 步骤4:减4
    y = y / 2;       // 步骤5:除以2
    y = y - x;       // 步骤6:减去原始整数
    cout << "The result is " << y << endl;
    return 0;
}

额外小知识:

其实这个谜题本质上是个数学小魔术!咱们把运算步骤化简一下:

(((x + 3) × 2) - 4) ÷ 2 - x
= (2x + 6 - 4) ÷ 2 - x
= (2x + 2) ÷ 2 - x
= x + 1 - x
= 1

所以不管你输入什么整数,正确运行后的结果都会是1,是不是很有意思?

内容的提问来源于stack exchange,提问作者Darin Hinze

火山引擎 最新活动