📜  C |指针基础问题14(1)

📅  最后修改于: 2023-12-03 14:59:38.427000             🧑  作者: Mango

C | 指针基础问题14

在C语言中,指针是一种非常重要的数据类型。指针变量保存的是一个地址,该地址指向内存中的一个数据,可以通过指针来操作这个数据。本文将介绍指针基础问题14。

问题描述

给定一个整数型的一维数组,要求使用指针的方式交换数组中最大和最小两个元素的位置,输出交换后的结果。

解决方法

首先,我们需要找到数组中的最大和最小值,并记录它们的下标。可以定义两个指针变量分别指向数组的第一个元素,然后使用循环遍历整个数组,比较数组中的元素大小,更新指针变量。

int *max, *min;
max = min = a;

for (i = 0; i < n; ++i) {
    if (*max < a[i]) {
        max = &a[i];
    }
    if (*min > a[i]) {
        min = &a[i];
    }
}

接下来,我们可以使用指针的方式交换最大和最小元素的位置。

int temp = *max;
*max = *min;
*min = temp;

最后,我们可以输出交换后的结果。

for (i = 0; i < n; ++i) {
    printf("%d ", a[i]);
}
printf("\n");
完整代码
#include <stdio.h>

int main() {
    int n, i;
    int a[100];
    int *max, *min;

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

    max = min = a;

    for (i = 0; i < n; ++i) {
        if (*max < a[i]) {
            max = &a[i];
        }
        if (*min > a[i]) {
            min = &a[i];
        }
    }

    int temp = *max;
    *max = *min;
    *min = temp;

    for (i = 0; i < n; ++i) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

以上就是指针基础问题14的解决方法,希望能对读者有所帮助。