Онлайн компилятор 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++) { if (*q<min) { min = *q; } if (*q>max) { max = *q; } q++; } } int main() { int n; int *a; scanf("%d", &n); int b[n]; a=&b[0]; for(int i = 0;i< n; i++) { scanf("%d", &b[i]); printf("%d ", b[i]); } void swap_min_max(a,n); for(int i = 0;i< n; i++) { printf("%d ", b[i]); } return 0; }
这段代码试图实现一个函数,用来交换数组中的最小值和最大值。但代码存在几个问题,导致它不能正确工作。

- 在 `swap_min_max` 函数中,你找到了最小值和最大值,但没有记录它们的位置(索引或指针),因此无法进行交换。你需要记住最小值元素和最大值元素分别在哪里。
- 在 `main` 函数中调用 `swap_min_max` 时,你写成了 `void swap_min_max(a,n);`,这是错误的。调用函数时不需要写返回类型,直接写 `swap_min_max(a,n);` 即可。