为什么显示答案错误???

#include<stdio.h>
int a[10];
void sr(int a[]){
int i;
for(i=0;i<10;i++)scanf("%d",&a[i]);
}
void tz(int a[]){
int i,max,min,n;
max=9;
min=0;
for(i=0;i<10;i++){
if(a[i]>a[max])max=i;
if(a[i]<a[min])min=i;

}
n=a[0];a[0]=a[min];a[min]=n;
 n=a[9];a[9]=a[max];a[max]=n;

}
void dy(int a[]){
int i;
for(i=0;i<10;i++)printf("%d ",a[i]);
}
int main()
{
sr(a);
tz(a);
dy(a);
return 0;
}

img

#include<stdio.h>
int a[10];
void sr(int a[]){
    int i;
    for(i=0;i<10;i++)scanf("%d",&a[i]);
}
void tz(int a[]){
    int i,max,min,n;
    max=a[0];//max=9输入10个整数,并不是0-9的数哦;
    min=a[0];//min=0;
    int imin,imax;//用来记录max,min的下标
    for(i=0;i<10;i++){
        if(a[i]>max)
        {   max=a[i];//max=i;max要等于数组的值,不能是索引i
            imax=i;
        }
        else if(a[i]<min)
        {
            min=a[i];//min=i;
            imin=i;            
        }
    }
    //n=a[0];a[0]=a[min];a[min]=n;
    //n=a[9];a[9]=a[max];a[max]=n;
    n=a[0];a[0]=a[imin];a[imin]=n;
    n=a[9];a[9]=a[imax];a[imax]=n;
}
void dy(int a[]){
    int i;
    for(i=0;i<10;i++)printf("%d ",a[i]);
}
int main()
{
    sr(a);
    tz(a);
    dy(a);
    return 0;
}

img

img

修改如下,供参考:

#include<stdio.h>

int a[10];

void sr(int a[])
{
    int i;
    for(i=0;i<10;i++) scanf("%d",&a[i]);
}
void tz(int a[])
{
    int i,max,min,n;
    max=0;//max=9;
    min=0;
    for(i=0;i<10;i++){
            if(a[i]>a[max])max=i;
            if(a[i]<a[min])min=i;
    }
    n=a[0];a[0]=a[min];a[min]=n;
    if(max==0) max = min;
    n=a[9];a[9]=a[max];a[max]=n;
}
void dy(int a[])
{
    int i;
    for(i=0;i<10;i++)  printf("%d ",a[i]);
}
int main()
{
    sr(a);
    tz(a);
    dy(a);
    
    return 0;
}