我仍然对C ++很新,并决定制作一个斐波那契序列。它起作用了(哇!)但它并没有像我希望的那样好。
我的意思是说,例如我告诉我的程序计算我将得到的序列的前10个术语
“0,1,1”然后我必须按下每个附加数字的输入,直到它达到10,在这种情况下程序返回0并结束。
如何让程序显示我想要的所有数字,而无需另外输入一个?
这是我的剧本:
#include <iostream>
using namespace std;
int main()
{
int FibNum;
cout << "How many numbers of the Fibonacci Sequence would you like to see? \n\n";
cin>> FibNum;
cin.ignore();
int a = 0;
int b = 1;
int c = 2;
cout << "Fibonacci Sequence up to " << FibNum << " terms.\n\n";
cout << a << "\n" << b << "\n";
for (int c = 2; c < FibNum; c++) {
int d = a + b;
cout << d;
cin.ignore();
a = b;
b = d;
}
}
提前感谢您的帮助!
P.S。另外,如果你发现我正在做的任何可怕的事情,请随意纠正我,我很清楚我可能做错了很多,我只是想学习。 :
答案 0 :(得分:5)
一些事情:
1)在int c = 2;
循环中重新定义c
时删除for
。
2)在你的cin.ignore();
循环中删除行for
:这将解决您的“输入”问题;该行等待一些输入然后忽略它。
3)在输出中放置一些空格:例如cout << d << ' '
所以你的号码是分开的。
4)[Acknowledge vincent_zhang]考虑转移到uint64_t
作为a
,b
和d
的数据类型。这是C ++ 11中的标准类型。它是64位无符号整数类型;适用于大量条款。
和一件小事,接近个人观点,
5)使用++c
代替c++
,因为前者永远不会运行得更慢,因为从概念上讲,至少后增量必须采用原始值的副本。
答案 1 :(得分:2)
除了之前的答案,
要更好地格式化输出,请通过更改此
来添加空白区域cout << d;
到
cout << d << " ";
您可能希望将a
,b
和d
的类型从int
更改为double
以防止溢出。
(如果你在代码中使用FibNum=100
,你应该能够观察到溢出,这意味着你会在序列的末尾得到一些不正确的数字。)
答案 2 :(得分:1)
将cin.ignore()移出循环,然后您无需输入即可打印所有10个斐波纳契系列数