Online Compiler C

#include <stdio.h> void swap_min_max(int *a, int n) { int *q1,*q2; q1=a; q2=a; int min = *q1, max = *q2; 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[100]; a=&b[0]; for(int i = 0;i< n; i++) { scanf("%d", &b[i]); printf("%d ", b[i]); } swap_min_max(a,n); for(int i = 0;i< n; i++) { printf("%d ", b[i]); } return 0; }
这段代码的目的是找到数组中的最小值和最大值,然后交换它们的位置。但目前 `swap_min_max` 函数只找到了最小值和最大值,并没有实际交换数组中的元素。

- 在 `swap_min_max` 函数中,你只更新了变量 `min` 和 `max` 的值,但没有记录最小值和最大值在数组中的位置(即它们的指针或索引)。你需要保存指向最小值和最大值元素的指针,而不是只保存数值。
- 找到最小值和最大值的位置后,你需要通过指针来交换这两个元素的值。注意,交换时不能只交换指针本身,而要交换指针所指向的内存中的值。