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

为什么这个输出斐波那契数列的C++程序使用std::cout无任何输出?

程序无输出的核心原因
  • 最直接的问题是合法范围判断逻辑写反:代码中if(1<=n&&n<=1000) { return 0; }的作用是当输入n落在1~1000的合法区间时,直接终止程序返回0。你输入的6符合该判断条件,程序直接退出,完全没有执行后续的斐波那契数列计算和输出逻辑。
代码存在的其他问题
  1. 不符合标准C语法:int arr[n];属于C语言的变长数组特性,不是标准C的支持内容,仅部分编译器通过扩展兼容该写法,正规场景下建议替换为std::vector<int> arr(n);实现动态长度的数组功能。
  2. 数组越界风险:当输入n=1时,代码中arr[1] = 1会访问数组下标为1的位置,超出长度为1的数组的合法访问范围,触发未定义行为。
  3. 输出逻辑冗余错误:后续代码先通过循环打印了arr[0]到arr[n-1]的所有元素,又额外单独输出一次arr[n-1],逻辑修正后运行会重复打印数列的最后一位。
修正后的参考代码
#include <iostream>
#include <vector>
using namespace std;
int main(){
    int n;
    cin >> n;
    // 合法范围校验,不符合要求才退出
    if(n < 1 || n > 1000) {
        return 0;
    }
    vector<int> arr(n);
    arr[0] = 1;
    if(n >= 2) {
        arr[1] = 1;
    }
    for(int i = 2; i < n; i++) {
        arr[i] = arr[i-1] + arr[i-2];
    }
    for(int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:39:03