C++ 为什么输出没有显示出来?

C++ 为什么输出没有显示出来?,c++,arrays,cout,C++,Arrays,Cout,我的程序是查找数组中缺少的最小正数。对于以下输入,我期望输出为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 >

我的程序是查找数组中缺少的最小正数。对于以下输入,我期望输出为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;
}

#包括
使用名称空间std;
int main()
{
int n;
cin>>n;
整数数组[n];
对于(int i=0;i>阵列[n];
}
int const N=1e4+2;
布尔指数[N];
对于(int i=0;i0)
{
indexarray[array[i]]=true;
}
}
int ans=-1;
对于(int i=1;i我想是因为
int-array[n];
生成了一个名为
array
的数组,其中包含n个元素,第一个元素从
array[0]
开始。
cin>>数组[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];
}

for(int i=0;i>阵列[i];
}

另外,我认为可变长度数组是非标准的,所以可以尝试改变它。用
std::vector array(n)
替换它。

在调试器中运行它,或者添加一些中间cout语句,以查看您的进展。
int array[n]这是不正确的C++代码。这是使用<代码>使用命名空间STD;变得更坏,因为现在整个C++标准库和它的成千上万个标识符现在有效地在全局命名空间中,将程序变成雷区。这里有一个简单的例子,说明如何使事情出错:唯一的变化是TH。e编译器已更新为最新版本,现在代码无法编译。我的橡皮鸭想知道您在这里阅读的是哪个元素
cin>>array[n]请解释一下这个程序应该解决什么问题吗?请注意,OP的代码也缺少一个<代码>中断;在最后一个循环中,是有效的。程序通常不会注意到数组超出了界限,并且会继续访问无效的内存,直到它在Access上崩溃。ng不可用的内存,由于从无效内存读取的错误数据触发的无效操作而崩溃,或者产生错误的结果。我喜欢程序崩溃,因为我确信我遇到了问题,但读取无效内存有所谓的问题,当行为未定义时,任何事情都可能发生似乎在工作。
for (int i = 0; i < n; i++)
    {
        cin >> array[i];
    }