C++ 在Hackerearth上获取运行时错误(SIGSEGV),无法找出代码中的错误
我知道这是一个无效的内存引用错误,但我似乎无法在我的代码中找到错误的原因 我刚刚在Hackerearth上试过我的问题,那是“查找产品” 我提交的是这个,它没有给我关于代码块编译器的错误,但是弹出一个运行时错误SIGSEGVC++ 在Hackerearth上获取运行时错误(SIGSEGV),无法找出代码中的错误,c++,compiler-errors,segmentation-fault,online-compilation,C++,Compiler Errors,Segmentation Fault,Online Compilation,我知道这是一个无效的内存引用错误,但我似乎无法在我的代码中找到错误的原因 我刚刚在Hackerearth上试过我的问题,那是“查找产品” 我提交的是这个,它没有给我关于代码块编译器的错误,但是弹出一个运行时错误SIGSEGV #include <iostream> using namespace std; int main() { int cases; int pro = 1; int product[1][cases]; cin >> cases;
#include <iostream>
using namespace std;
int main() {
int cases;
int pro = 1;
int product[1][cases];
cin >> cases;
for (int x = 0; x < cases; x++) {
cin >> product[1][x];
}
for (int x = 0; x < cases; x++) {
pro *= product[1][x];
}
cout << pro;
}
提前感谢:
您的int产品[1][cases];在cin>>案例之前;,因此,输入将不会用于分配。
您声明了int产品[1][cases];,因此,只允许使用产品[0],使用产品[1]超出范围无效。
可变长度数组不在C++标准中。
试试这个:
#include <iostream>
using namespace std;
int main() {
int cases;
int pro = 1;
cin >> cases;
int* product = new int[cases];
for (int x = 0; x < cases; x++) {
cin >> product[x];
}
for (int x = 0; x < cases; x++) {
pro *= product[x];
}
cout << pro;
delete[] product;
}
编译器应该至少给出一些关于该代码的警告。不要忽略它们。你忘了取模。你以后会得到错误的答案,因为你没有阅读和理解所有的说明。你可以用三个整数来解决这个问题;您不需要存储所有的数字。