Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助清理Fibonacci序列使用C++ 我仍然对C++很陌生,并决定制作斐波那契序列。成功了,呜!但是它没有我想要的那么好_C++_Fibonacci - Fatal编程技术网

需要帮助清理Fibonacci序列使用C++ 我仍然对C++很陌生,并决定制作斐波那契序列。成功了,呜!但是它没有我想要的那么好

需要帮助清理Fibonacci序列使用C++ 我仍然对C++很陌生,并决定制作斐波那契序列。成功了,呜!但是它没有我想要的那么好,c++,fibonacci,C++,Fibonacci,我的意思是说,例如,我告诉我的程序计算我将得到的序列的前10项 0,1,1,然后我必须为每个额外的数字按enter键,直到它达到10,在这种情况下,程序返回0并结束 我如何让程序显示我想要的所有数字,而不为每一个额外的数字按enter键 这是我的剧本: #include <iostream> using namespace std; int main() { int FibNum; cout << "How many numbers of the Fib

我的意思是说,例如,我告诉我的程序计算我将得到的序列的前10项

0,1,1,然后我必须为每个额外的数字按enter键,直到它达到10,在这种情况下,程序返回0并结束

我如何让程序显示我想要的所有数字,而不为每一个额外的数字按enter键

这是我的剧本:

#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;
    }
}
提前感谢您的帮助

另外,如果您注意到我正在做的任何糟糕的事情,请随时纠正我,我很清楚我可能做错了很多,我只是在努力学习。:]

有几件事:

1移除int c=2;当您在for循环中定义c时

2删除行cin。忽略;:在for循环中:这将解决enter问题;该行等待一些输入,然后忽略它


3在输出中留出一些空白:例如,cout移动cin。忽略循环外,则无需输入即可打印除先前答案外的所有10个斐波那契数列

要更好地格式化输出,请通过更改此选项添加空白

cout << d; 

您可能需要将a、b和d的类型从int更改为double以防止溢出

如果在代码中使用FibNum=100,您应该能够观察到溢出,这意味着您将在序列末尾得到一些不正确的数字


移动c.忽略;循环外:如果您输入字符,它将等待输入字符,例如123456,它将让循环运行7次,每个数字一次,换行一次。@DietmarKühl,谢谢,这确实有效,但是,它会导致同样严重的问题,现在所有数字显示为12358132134,而不是1 2 3 5等。。是否对此进行了适当的修复,或者是否应尝试将\n添加到循环中?编辑:我刚刚决定添加一个“\n”,当然你可以自己解决这个问题。只需在每个数字后面添加一个换行“\n”:std::cout@DietmarKühl好吧,我只是这么做了,我只是想看看是否有更有效的方法,但我想添加一个\n是非常有效的,哈哈。再次感谢:][1推荐数据更改,并鼓励我讨论新的C++11数据类型。还要注意,double在整数运算中精确到非常大的数值。@Bathsheba我对C++11不太了解,但会去做一些研究;谢谢你的信息!
cout << d << " ";