Online Compiler C

#include <stdio.h> void swap_min_max(int *a, int n) { int min = 0; int max = 0; int p, q; for (int i = 1; i < n; i++) { if (a[max] < a[i]) { max = i; p = i; } } for (int i = 1; i < n; i++) { if (a[min] > a[i]) { min = i; break; } }int temp; temp=a[min]; a[min]=a[max]; a[max]=temp; } int main() { swap_min_max(*a, 6) }
这段代码试图实现一个函数,交换数组中的最小值和最大值。但代码有几个问题。

首先,`main` 函数中调用 `swap_min_max(*a, 6)` 是错误的,因为 `a` 没有被定义,而且 `*a` 的用法也不对。你需要先定义一个数组,然后传入数组名和大小。

其次,在 `swap_min_max` 函数中,寻找最小值的循环里有一个 `break` 语句,这会导致循环在第一次找到比当前最小值小的元素时就停止,而不是遍历整个数组找到真正的最小值。同时,变量 `p` 和 `q` 被定义了但没有使用。

- 在 `main` 中,你需要先声明并初始化一个整型数组,然后调用函数时直接传入数组名和大小,例如 `swap_min_max(arr, 6)`。
- 在寻找最小值的循环中,去掉 `break`,让循环完整遍历所有元素,这样才能找到真正的最小值位置。