【问题标题】:C++ Unexpected calculation in programC ++程序中的意外计算
【发布时间】:2015-03-29 11:39:42
【问题描述】:

当我的程序使用像 60 这样的命令行参数运行时,第一个计算是错误的,但其余的似乎是正确的。我想我在 main() 函数中有一个错误,但我找不到它。在 Linux 60 上显示 ~30000 步,在 Windows 上显示 ~-7000000 步。

#include <iostream>
#include <cstdlib>

using namespace std;

void printcollatz( int i ) {

    int count;

    int originalnumber = i;

    int workingnumber = i;

    while( workingnumber >= 1 ) {

        if( workingnumber == 1 ) {

            cout << originalnumber << " takes " << count << " steps" << endl;

            count = 0;

            break;
        }

        if( workingnumber % 2 == 0 ) {

            workingnumber /= 2;

            count++;
        }
        else {

            workingnumber = ( 3 * workingnumber ) + 1;

            count++;
        }
    }
}

int main( int argc, char* argv[] ) {

    int incrementnumber;

    if( argc > 1 ) {

        if( atoi( argv[1] ) == 0 ) {

            incrementnumber = 2;
        }
        else {

            incrementnumber = atoi( argv[1] );
        }
    }

    while( 1 ) {

        printcollatz( incrementnumber );

        incrementnumber++;
    }

    return 0;
}

【问题讨论】:

  • 你还没有初始化count

标签: c++ function arguments command-line-arguments


【解决方案1】:

你需要初始化计数:

int count = 0;

您可能还想在循环中添加终止条件。

【讨论】:

  • 啊,我现在明白了。非常感谢。
  • 我正在考虑何时停止。当我弄清楚时,我会添加它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 2021-08-22
  • 2017-10-07
相关资源
最近更新 更多