如何实现数组中最大一个值与第一个数组元素进行交换,最小一个值与数组最后一个元素进行交换?(语言-c语言)

大家好,我有一个问题,我想实现最大值与数组中第一个元素交换位置,最小值和最后一个值交换位置,这是我的代码,但是却运行不出来结果,请问这个代码错在哪里了呢?谢谢大家
#include <stdio.h>

int main() {
int a[5];
int i, t, max, min;

for (i = 0; i < 5; i++) {
    scanf("%d", &a[i]);
}


max = a[0];
min = a[4];

for (i = 0; i < 5; i++) {
    if (a[i] > max)
        t = i;
}

if (t != 0) {
    a[0] = a[t];
    a[t] = max;//最大值未改变直接赋值
}

t = 0;

for (i = 0; i < 5; i++) {
    if (a[i] < min)
        t = i;
}

if (t != 4) {
    a[4] = a[t];
    a[t] = min;//同最大值的操作
}

return 0;

}

你只顾着输入,却疏忽了输出

printf("%d %d %d %d %d",a[0],a[1],a[2],a[3],a[4]);

加入后就可以输出了。其实有更好的方法输出:
①下标法

#include<stdio.h>
void main()
{
    int a[10];
    int i;
    for (i = 0; i<10; i++)
        scanf("%d", &a[i]);
    for (i = 0; i<10; i++)
        printf("%d\n", a[i]);
    printf("\n");
}

②由数组名计算地址

#include<stdio.h>
void main()
{
    int a[10];
    int i;
    for (i = 0; i<10; i++)
        scanf("%d", &a[i]);
    printf("\n");
    for (i = 0; i<10; i++)
        printf("%d\n", *(a + i));
    printf("\n");
}

③用指针变量指向数组元素

#include<stdio.h>
void main()
{
    int a[10];
    int i, *p;
    for (i = 0; i<10; i++)
        scanf("%d", &a[i]);
    printf("\n");
    for (p = a; p<(a + 10); p++)
        printf("%d", *p);
    printf("\n");
}

没有输出啊

有些地方,思路错了,比如那俩if语句的判断,可以看一下下面的代码实现思路

#include<stdio.h>
int main()
{
    int arry[5],i,j=0,k=0,t;
    int max,min;
 
    printf("请输入五个数:\n");
    for(i=0;i<5;i++)
    {
        scanf("%d",&arry[i]);
    }
    
    max=arry[j];
    min=arry[k];
 
    for(i=0;i<5;i++)
    {
        if(arry[j]<arry[i])
        {
            j=i;
            max=arry[i];
        }
        if(arry[k]>arry[i])
        {
            k=i;
            min=arry[i];
        }
    }
    
    arry[j]=arry[0];
    arry[0]=max;
 
    arry[k]=arry[4];
    arry[4]=min;
 
    for(i=0;i<5;i++)
    {
        printf("%d ",arry[i]);
    }
 
    return 0;
}

希望对题主有所帮助!可以的话,帮忙点个采纳!