这个代码我获得运行时错误.Abort信号从中止(3)(SIGABRT) & # 39;


#include <iostream>
using namespace std;
void reverse(int A[],int N){

for(int i=0;i<N/2;i++){
swap(A[i],A[N-i-1]);
}
for(int i=0;i<N;i++){
cout<<A[i];
}
}
int main() {
//code
int T,N,A[N];
cin>>T>>N;
for(int i=0;i<N;i++){
cin>>A[i];
}
reverse(A,N);
//please help it its getting into my nerves
return 0;
}

请帮我解决这个问题对于这段代码,我得到运行时错误。abort信号来自abort(3) (SIGABRT)'

你得到错误,因为你没有初始化你的变量默认值

问题1:int T,N,A[N];这里N用垃圾值初始化。

问题2:在从输入中获得N值之前初始化/声明A[]

解决方案:

int T,N;
cin>>T>>N;
int A[N];

旁注:使用下面给出的向量有更好更有效的解决方案:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void reverse(vector<int>& x) {
reverse(x.begin(), x.end());
return;
}
int main() 
{
vector<int> list;
int listSize;
cout << "How much element you want to put in list" << endl;
cin >> listSize;
cout << "Enter the numbers :" << endl;
for (int number; cin >> number;) {
list.push_back(number);

if (list.size() == listSize)
break;
}
reverse(list);
cout << "The reverse of your numbers : ";
for (const int x : list)
cout << x <<' ';
cout << endl;
return 0;

}

这里的问题是,您在为N分配任何值之前声明A[N]。在输入N的值后声明A[N]。

最新更新