你的代码整个不对,因为第一个元素正好是最大的,所以碰巧被当作max交换到最后。
#include <stdio.h>
void ru(int* a);
void fun(int* a);
void chu(int* a);
int main() {
int a[10];
ru(a);
fun(a);
chu(a);
return 0;
}
void ru(int* a) {
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
}
void fun(int* a) {
int max = a[0];
int max_index = 0;
int min = a[0];
int min_index = 0;
for (int i = 1; i < 10; i++) {
if (a[i] > max) {
max = a[i];
max_index = i;
}
if (a[i] < min) {
min = a[i];
min_index = i;
}
}
int temp = a[max_index];
a[max_index] = a[9];
a[9] = temp;
temp = a[min_index];
a[min_index] = a[0];
a[0] = temp;
}
void chu(int* a) {
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
找最大值 最小值的两个循环不正确,得不到正确的最大或最小的位置。