写长长时间的分段错误

时间:2018-05-03 09:06:27

标签: c++

当我长时间写而不是int时,我得到分段错误..我该怎么办?这是我的代码的一部分

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,a[n],i,count=0,c=0,c1=0,j;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);
    int r=a[n-1]-a[0];

    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(abs(a[j]-a[i])==r)
            count++;
        }
    }

    cout<<r<<" "<<count<<endl;
    return 0;


}

1 个答案:

答案 0 :(得分:1)

下面:

int n,a[n],i,count=0,c=0,c1=0,j;
cin>>n;

您在初始化之前使用n。在声明一个n大小的数组后,从用户读取n是没用的。您应该使用std::vector<int>代替。例如。

size_t n;
std::cin >> n;
auto a = std::vector<int>(n);