pta显示运行时错误,哪里错


#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    double max=0, min=1000,ave=0;
    
    int N, m;
    double sum=0;
    cin >> N;
    int a[1000];
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &a[i]);
        sum = sum + a[i];
    }
    ave = sum / N;
    for (int i = 0; i < N; i++)
    {
        if (a[i] > max)
            max = a[i];
        if (a[i] < min)
            min = a[i];
    }

    cout << "average = " << fixed << setprecision(2) << ave << endl;
    cout << "max = " << fixed << setprecision(2) << max << endl;
    cout << "min = " << fixed << setprecision(2) << min << endl;
}

int a[1000], 如果测试数据超出1000,就会出错。建议min/max在输入时直接计算,不做数据存储。

#include<iostream>
#include<iomanip>
using namespace std; 
int main()
{
    double max=0, min=1000,ave=0;
    int N, m;
    double sum=0;
    cin >> N;
    int a;
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &a);
        sum = sum + a;
        if (a > max)
            max = a;
        if (a < min)
            min = a;
    }
    ave = sum / N;
    cout << "average = " << fixed << setprecision(2) << ave << endl;
    cout << "max = " << fixed << setprecision(2) << max << endl;
    cout << "min = " << fixed << setprecision(2) << min << endl;
}