c++ - 为什么没有显示输出?
问题描述
我的程序是从数组中找到最小的正数。使用以下输入,我预计输出为 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)
应该可以工作。
推荐阅读
- facebook-graph-api - API Graph Instagram:获取媒体评论返回错误:400 请求的资源不存在
- python - 我们如何在 Caffe 库中找到 Python 层日志消息?
- java - 画布不会呈现不透明
- java - ADF:如何删除设置为视图标准的值
- javascript - 如果它不存在则打开窗口,如果它存在于Javascript中则最大化
- google-sheets - 一张图表中的三个 Google 表格的数据图表(饼图)
- iphone - 构建一个使用 React Native 创建的 iPhone 应用程序
- axon - 如何在 Saga 中测试具有内部状态的方法
- git - Git克隆和修改开源作为子目录并与master保持更新
- elasticsearch - 从 Elasticsearch 获取不同的字段