【问题标题】:How to check whether the program goes over the data type storage?如何检查程序是否越过数据类型存储?
【发布时间】:2019-01-18 01:05:47
【问题描述】:

我需要弄清楚如何控制程序的流程,以便在用户插入大量数字时程序不会崩溃。该程序的目标是根据用户的输入计算斐波那契数列。

#include <iostream>
using namespace std;

int main() {

int n;   
cout << " Please enter number of fibonacci number series you wanna see  ";   
cin >> n;     
int num1=0;
int num2=1;
cout << num1 << " " << num2 << " ";

if(num1+num2<=32756)

for (int i=0; i<=n-1; ++i)
{
    int num2Temp=num2;
    cout << num1+num2 << " ";
    num2=num1+num2;
    num1=num2Temp;

}
else 
    cout << " TOO BIG " << endl;

return 0;
}

我确实计算了斐波那契数列,但是,它不遵循 if 语句并在超过 32756 时停止程序。我理解它为什么这样做,因为 num1+num2 没有更新,所以程序理解它 0 +1,没有每个循环的更新版本。但我没有具体的想法来修复该程序。

【问题讨论】:

  • 你的if语句被检查,0+1小于32756,你再也不会检查了。
  • 谢谢,但是在我添加了 for(;;) 循环后,即使我要求 3,它仍然会给出太大

标签: c++ fibonacci


【解决方案1】:

您只需在循环开始之前测试总和一次。

您可能想在循环内部进行测试,如果总和超过32756,则退出它:

for (int i = 0; i < n; i++)
{
    if (num1 + num2 <= 32756)
    {
        int num2Temp = num2;
        num2 += num1;
        num1 = num2Temp;
        cout << num2 << " ";
    }
    else
    { 
        cout << " TOO BIG " << endl;
        break;
    }
}

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2012-10-01
    相关资源
    最近更新 更多