函数 指针交换数组中的数 最小值与第一个数交换 最大值与最后一个值交换

问题描述:

img

img

找出最小值最大值的下标与第一个和最后一个值交换即可
你代码逻辑混乱,参考下这个代码

#include <stdio.h>

void swap(int *a,int *b)
{
    int t=*a;
    *a=*b;
    *b=t;
}

int main ()
{
    int i,max=0,min=0;
    int a[10];
    printf("输入10个数:");
    for(i = 0;i < 10;i ++)
    {
        scanf("%d",&a[i]);
    }
    for(i = 0; i < 10; i ++)
    {
        if (a[i]>a[max])
            max = i;
        if (a[i]<a[min])
            min = i;
    }
    swap(&a[min],&a[0]);
    swap(&a[max],&a[9]);
    for(i = 0;i < 10;i ++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

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

首先定义 int * pMax和 int * pMin,然后pMax = pMin = a就是错的。当你修改pMax值时,相当于修改数组a的第一个元素值。
应该定义 int max,min; max = min = a[0]
其次,你main函数根本就没有调用swap函数啊。写了半天根本没使用
swap中不需要在scanf啦
另外要注意一个坑,如果第0个元素是最大值,那么你在最小值和第0个元素交换后,最大值就不在第0个位置啦!!!被换到原来最小值的位置