程序设计 - 移动数组元素

在一个不重复的数组中,请将这个数组的最小数和数组第一个数交换,最大数和数组最后一个数交换!
输入格式
有两行
第一行有一个整数 n( 5 <= n <= 100)
第二行有 n个不重复的整数!
输出格式
移动位置后的数组
输入样例
5
6 7 1 10 4
输出样例
1 7 6 4 10

#include <stdio.h>
#include <limits.h>

#define N 100

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

int main()
{
    int a[N];
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    int min = INT_MAX, max = INT_MIN, min_i, max_i;
    for (int i = 0; i < n; i++)
    {
        if (a[i] < min)
        {
            min = a[i];
            min_i = i;
        }
        if (a[i] > max)
        {
            max = a[i];
            max_i = i;
        }
    }
    swap(&a[min_i], &a[0]);
    swap(&a[max_i], &a[n - 1]);
    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);
    return 0;
}

解决本题关键就是 找出最小数 和 最大数 方法如下:
1、定义max和min俩变量
2、把第一个值赋值给max和min
3、遍历数组,如果其中的一个元素比max大,则把该值给max,如果其中的一个元素比min小,则把该值给min
4、遍历后max和min就是最大数和最小数了
找出最大值和最小值之后 借助之前所学冒泡排序交换位置的思想,进行交换位置即可。
希望对题主有所帮助!望采纳!