为什么不显示输出?

Why the output is not showing?

我的程序是找出数组中缺失的最小正数。对于以下输入,我期望输出为 2.

6 
0
-9
1
3
-4
5

我的问题是它没有给出任何输出。谁能解释一下吗?

#include <bits/stdc++.h>
using namespace std;
   
int main()
{
    int n;
    cin >> n;

    int array[n];

    for (int i = 0; i < n; i++)
    {
        cin >> array[n];
    }
    int const N = 1e4+2;
    bool indexarray[N];

    for (int i = 0; i < N; i++)
    {
        indexarray[i] = false;
    }
    for (int i = 0; i < n; i++)
    {

        if (array[i] > 0)
        {
            indexarray[array[i]] = true;
        }
    }
    int ans = -1;
    for (int i = 1; i < N; i++)
    {
        if (indexarray[i] == false)
        {
            ans = i;
            
        }
    }
    cout << ans << endl;
    return 0;
}

我认为是因为 int array[n]; 生成了一个名为 array 的数组,其中包含 n 个元素,第一个元素从 array[0] 开始。 cin >> array[n];需要修改array[n],但是因为第一个元素是array[0],最后一个元素是array[n-1]array[n]不存在。您的代码出错并退出。

尝试改变

for (int i = 0; i < n; i++)
    {
        cin >> array[n];
    }

for (int i = 0; i < n; i++)
    {
        cin >> array[i];
    }

此外,我认为可变长度数组是非标准的,所以也许可以尝试更改它。将其替换为 std::vector<int> array(n) 应该可以。