pta显示运行时错误,但是其他都是对的,这怎么解决啊,请大家帮助一下

img

#include<stdio.h>
#define X 10
int main()
{
int max,min,i;
int a[X];
int N;
int t1,t2,t;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
min=a[0];
for(i=1;i<N;i++)
{
if(a[i]<min)
{
min=a[i];
t1=i;
}
}
t=a[0];
a[0]=a[t1];
a[t1]=t;

  max=a[0];
for(i=1;i<N;i++)
{
    if(a[i]>max)
    {
        max=a[i];
        t2=i;
    }
}
  t=a[N-1];
  a[N-1]=a[t2];
  a[t2]=t;

for(i=0;i<N;i++)
{
    printf("%d ",a[i]);
}
return 0;
}

第五行的a[X]中X的值为多少?目测要么是X没有赋初值,要么是数组开小了


#include<stdio.h>
int main(void)
{
    int N;
    int array[10];

    scanf("%d", &N);

    for (int i = 0; i < N; i++)
    {
        scanf("%d", &array[i]);
    }

    // 先假设第一个数是最大数、最小数,后续比较过程中更新其值
    minIndex = maxIndex = 0;

    for (int i = 0; i < N; i++)
    {
        // 后续输入过程中存在比max大的数
        if (array[i] > array[maxIndex])
        {
            maxIndex = i;
        }

        // 后续输入过程中存在比min小的数
        if (array[i] < array[minIndex])
        {
            minIndex = i;
        }
    }

    // 分情况讨论
    if (minIndex == 0)                // 最小的数在开头,则将最大的数交换到末尾
    {
        int temp = array[N - 1];
        array[N - 1] = array[maxIndex];
        array[maxIndex] = temp;
    }
    else if (maxIndex == N - 1)        // 最大的数在末尾,则将最小的数交换到开头
    {
        int temp = array[0];
        array[0] = array[minIndex];
        array[minIndex] = temp;
    }
    else if (minIndex == N - 1)        // 最小的数在末尾,先将最大的数换到末尾,再将最小的数换到开头
    {
        // 将最大的数与最小的数交换
        int temp = array[N - 1];
        array[N - 1] = array[maxIndex];
        array[maxIndex] = temp;

        minIndex = maxIndex;

        // 将最小的数交换到开头
        temp = array[minIndex];
        array[minIndex] = array[0];
        array[0] = temp;
    }
    else if (maxIndex == 0)            // 最大的数在开头,先将最小的数换到开头,再将最大的数换到最后
    {
        // 将最小的数与最大的数交换
        int temp = array[0];
        array[0] = array[minIndex];
        array[minIndex] = temp;

        maxIndex = minIndex;

        // 将最大的数交换到末尾
        temp = array[N - 1];
        array[N - 1] = array[maxIndex];
        array[maxIndex] = temp;
    }
    else // 最大最小数均在中间,直接将最大数交换到末尾,再将最小数交换到开头
    {
        // 最小数交换到开头
        int temp = array[0];
        array[0] = array[minIndex];
        array[minIndex] = temp;

        // 最大数交换到末尾
        temp = array[N - 1];
        array[N - 1] = array[maxIndex];
        array[maxIndex] = temp;
    }

    for (int i = 0; i < N; i++)
    {
        printf("%d ", array[i]);
    }

    return 0;
}