为什么这样不能输出最小值

#include<stdio.h>
int main()
{
int i,a[10],j,k;
int max,min;
max=min=a[0];
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
if(a[i]>=max)
{
max=a[i];
j=i;

}
}
printf("最大数为%d,第%d位",max,j+1) ;
for(i=0;i<10;i++)
{
if(a[i]<=min)
{
min=a[i];
j=i;

}
}
printf("最小数为%d,第%d位",min,j+1) ;

}

因为初始化min的位置不对,在获取输入到数组a之前把数组a下标0的值赋给min,min的值为未初始化数组a下标0内存位置的值,而不是实际数组a获取输入后的值,如果这个内存位置的值小于数组a里所有元素的值,就会输出错误的结果,修改如下:

#include<stdio.h>
int main()
{
    int i,a[10],j,k;
    int max,min;
    
    
    for(i=0;i<=9;i++)
        scanf("%d",&a[i]);
    
    
    max=min=a[0]; //在数组a获取输入后再进行max和min的初始化
    for(i=0;i<10;i++)
    {
        if(a[i]>=max)
        {
        max=a[i];
        j=i;
        
        }
    }
    
    printf("\n最大数为%d,第%d位\n",max,j+1) ;
    for(i=0;i<10;i++)
    {
        if(a[i]<=min)
        {
            min=a[i];
            j=i;
        
        }
    }
    printf("最小数为%d,第%d位\n",min,j+1) ;

    return 0; 
}