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

C++编写3x+1猜想程序时能否直接使用x/2、x*3+1这类表达式?

3x+1问题C++代码错误修正说明

这类算术运算在C++中完全可以实现,你的代码没有得到预期结果是两处语法逻辑错误导致的,和表达式本身的写法无关。

错误原因

  • 循环条件逻辑写反:你当前的循环条件为while(x==1),表示仅当x等于1时才执行循环逻辑。你输入的初始值是9,不满足循环触发条件,循环体完全不会执行,因此没有后续数值输出。正确的循环条件应该是while(x != 1),即只要x还没迭代到1就持续执行计算。
  • 运算结果没有回存到变量:x/2;、x*3+1;这类表达式仅会计算对应算术结果,不会主动把结果赋值回原变量x,因此x的值从头到尾都不会发生变化。你需要手动赋值,两种写法均可:
    • 标准赋值写法:x = x / 2;、x = x * 3 + 1;
    • 复合赋值简化写法:x /= 2;、乘法部分可拆分为x *=3; x +=1;

修正后完整代码

#include <iostream>
using namespace std;
int main() {
    cout << "Write an integer.\n"; 
    int x; 
    cin >> x;
    // 实现3x+1数学问题的程序
    while (x != 1)  {
        if ((x%2)==0)  {
            x /= 2; 
            cout << x << ", ";
        }  else if ((x%2)==1)  {
            x = x * 3 + 1; 
            cout << x << ", ";
        }
    }
    return 0;
}

输入9后程序会依次输出28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, ,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:45:02