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

C++实现斐波那契数列时如何去除输出末尾多余的0

问题原因

  • 末尾多余的0来源:你的calc()方法返回值为int类型,固定返回0,main函数中写的cout << f2.calc() << endl;会将calc的返回值0也打印到输出末尾,这就是多余0的来源。
  • 删除return 0后出现垃圾值的原因:C++规范明确要求,有返回值的函数如果没有显式写return语句,执行结束后的返回值是未定义的,此时你还打印这个未定义的返回值,自然会输出随机垃圾数。

修复方案

不需要打印calc()的返回值,直接调用该方法即可,更规范的做法是把calc()的返回值改成void类型,从设计上避免误打印返回值的问题,修改后的完整代码如下:

#include <iostream>
using namespace std;

class fibo
{
private:
    unsigned long int n1,n2,final;

public:
    fibo()
    {
        n1 = 0;
        n2 = 1;
        final = n1 + n2;
    }

    fibo(int x1,int x2) //参数化构造函数
    {
        n1 = x1;
        n2 = x2;
        for (int x = 0;x<=8; x++)
        {
            final = n1 + n2;
            cout << final << " ";
            n1 = n2;
            n2 = final;
        }
        
    }

    // 修改为无返回值类型,无需return语句
    void calc()
    {
        for (int x = 0;x<=8; x++)
        {
            final = n1 + n2;
            cout << final << " ";
            n1 = n2;
            n2 = final;
        }
    }

    fibo(fibo &i); // 拷贝构造函数
};

fibo::fibo(fibo &i)
{
    n1= i.n1;
    n2 = i.n2;
    final = i.final;
}

int main()
{
    cout << "0 " ;
    fibo f1(0,1);
    fibo f2 = f1;
    // 直接调用方法,不打印返回值
    f2.calc();
    cout << endl;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:45:04