c语言找最值并换位.

描述
有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,然后最大值与最后一个数交换。输出转换好的序列。(即通过交换的方式,使最小值在数组开头,最大值在数组最后)

格式
输入格式
输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。

输出格式
输出转换好的序列。数据之间用空格隔开。

样例
样例输入
5
2 1 5 4 3
样例输出
1 2 3 4 5

你题目的解答代码如下:

#include <stdio.h>
int main()
{
    int a[1000], n, k, j, max, min;
    scanf("%d", &n);
    for (j = 0; j < n; j++)
        scanf("%d", &a[j]);
    max = min = 0;
    for (j = 0; j < n; j++)
    {
        if (a[max] < a[j])
            max = j;
        if (a[min] > a[j])
            min = j;
    }
    k = a[0];
    a[0] = a[min];
    a[min] = k;
    if (max == 0)
        max = min;
    k = a[n - 1];
    a[n - 1] = a[max];
    a[max] = k;
    for (j = 0; j < n; j++)
    {
        printf("%d ", a[j]);
    }
    return 0;
}

img

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

先遍历找出最大最小值下标,然后和头尾交换
需要注意头数据如果是最大值,那么交换最小值后,尾数据要和原最小值下标数据交换