求高手解答一道编程题目
输入8个整数 将其中最大的和最后一个交换,最小的和最后一个交换。
程序代码:#include <stdio.h>
void swap(int * p1, int * p2) {
if(p1 == p2)
return;
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
}
int main(void) {
int max_index, min_index, i, numbers[8];
for(i = 0; i < 8; i++)
scanf("%d", numbers + i);
max_index = 0;
min_index = 0;
for(i = 1; i < 8; i++) {
if(numbers[max_index] < numbers[i]) {
max_index = i;
}
if(numbers[min_index] > numbers[i]) {
min_index = i;
}
}
swap(numbers + max_index, numbers + 7);
swap(numbers + min_index, numbers + 7);
for(i = 0; i < 8; i++)
printf("%-4d", numbers[i]);
puts("");
return 0;
}
