C语言经典例67-数组最大值与最小值与数组元素交换

1 题目

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

2 分析

本题的关键是找出数组的最大值与最小值的位置,找出位置后与数组相应的位置交换即可

3 实现

#include <stdio.h>
#define N 10 // 假定数组大小为10

int main()
{
    int arr[N] = {4, 3, 1, 7, 8, 6, 0, 2, 9, 5};
    // 输出数组元素
    printf("交换前数组元素的排列为:");
    for (int i = 0; i < N; i++) {
        printf("%d ", arr[i]);
    }
    int maxIndex = 0; // 保存最大的数的数组下标,初始为0
    int minIndex = 0; // 保存最小的数的数组下标,初始为0
    for (int i = 1; i < N; i++) {
        if (arr[maxIndex] < arr[i]) {
            maxIndex = i; // 若i位置的值比最大值还大,就令i为最大值位置
        }
        if (arr[minIndex] > arr[i]) {
            minIndex = i; // 若i位置的值比最小值还小,就令i为最小值位置
        }
    }
    // 最大的与第一个元素交换
    int t = arr[0];
    arr[0] = arr[maxIndex];
    arr[maxIndex] = arr[0];
    // 最小的与第后一个元素交换
    t = arr[N - 1];
    arr[N - 1] = arr[minIndex];
    arr[minIndex] = arr[N - 1];
    // 输出数组元素
    printf("\n交换后数组元素的排列为:");
    for (int i = 0; i < N; i++) {
        printf("%d ", arr[i]);
    }
}

4 运行结果

交换前数组元素的排列为:4 3 1 7 8 6 0 2 9 5
交换后数组元素的排列为:9 3 1 7 8 6 0 2 9 0
发布了125 篇原创文章 · 获赞 199 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/syzdev/article/details/104356360
今日推荐