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
相关产品推荐
相关产品推荐

