Онлайн компилятор C

#include <stdio.h> void swap_min_max(int *a, int n) { int min = *a, max = *a; int *q = a; for(int i = 0; i < n;i++) { a++; if (*a<min) { min = *a; } if (*a>max) { max = *a; } } } int main() { return 0; }
这段代码定义了一个函数 `swap_min_max`,目的是在整数数组中交换最小值和最大值的位置。但函数目前只找到了最小值和最大值,并没有执行交换操作,而且指针移动逻辑也有问题。

- 函数在循环中移动了指针 `a`,但循环结束后指针已经指向数组末尾之外,无法再访问数组元素来执行交换。你应该保留原始数组的起始地址,比如用另一个指针来遍历。
- 找到最小值和最大值后,还需要记录它们的位置(即指向它们的指针),然后才能交换这两个位置的值。目前代码只记录了数值,没有记录位置。