首页 > 解决方案 > 为什么没有显示输出?

问题描述

我的程序是从数组中找到最小的正数。使用以下输入,我预计输出为 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;
}

标签: c++arrayscout

解决方案


我认为因为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)应该可以工作。


推荐阅读