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