为啥运行错误,明明我输入后答案是一样的

Description

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数;
①输入10个数;②进行处理;③输出10个数。

Input

10个整数

Output

整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)

Sample Input

2 1 3 4 5 6 7 8 10 9
Sample Output

1 2 3 4 5 6 7 8 9 10


#include<stdio.h>
void input(int a[10])
{
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &a[i]);
    }
}
int swap(int a[])
{
    int max = a[0];
    int min = a[0];
    int n, m;
    for (int j = 0; j <10; j++)
    {
        if (max<a[j])
        {
            max =a[j] ;
            m = j;
        }
    }
    for (int i = 0; i < 10; i++)
    {
        if (min>a[i])
        {
            min = a[i];
            n = i;
        }
    }
    int temp;
    temp = a[n];
    a[n] = a[0];
    a[0] = temp;
    temp = 0;
    temp = a[m];
    a[m] = a[9];
    a[9] = temp;
    return a[10];
}
void output(int a[10])
{
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", a[i]);
    }
}

int main()
{
    int a[10];
    input(a);
    swap(a);
    output(a);
    return 0;
}

n,m没有赋初值

输出最后一个数后多了一个空格

你n,m初值给的多少?

两个if里的>和<改为>=和<=