C语言 数据最小值交换问题

问题是:找出数组中最小的元素,并且与数组中首个元素交换位置,若出现多个最小元素则与第一次出现的最小元素交换。求指教一下下面的代码哪里出错了

#include <stdio.h>
int main ()
{
    int a[101];
    int i,n,x,min=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i-1]);
    }
    for(i=1;i<=n;i++)
    {
        if(a[min]>a[i-1])
        {
            min=i-1;
        }
            x=a[i-1];
            a[i-1]=a[min];
            a[min]=x;
         
    }
    for(i=1;i<=n;i++)
    printf("%d ",a[i-1]);
    return 0;
 } 

你题目的解答代码如下:

#include <stdio.h>
int main ()
{
    int a[101];
    int i,n,x,min=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i-1]);
    }
    for(i=1;i<=n;i++)
    {
        if(a[min]>a[i-1])
        {
            min=i-1;
        }
    }
    x=a[0];
    a[0]=a[min];
    a[min]=x;
    for(i=1;i<=n;i++)
    printf("%d ",a[i-1]);
    return 0;
 }

如有帮助,望采纳!谢谢!