#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]。