69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
void find_keys(int *arr, int len, int *max, int *min);
void swap(int *a, int *b);
int main(void)
{
int num_list[10];
int i, n, max, min;
while (scanf("%d", &n) != EOF) {
if (n > 10 || n < 0) {
printf("n is invalid!\n");
continue;
}
for(i = 0; i < n; i++)
scanf("%d", &num_list[i]);
find_keys(num_list, n, &max, &min);
//printf("Max = %d, min = %d\n", max, min);
swap(&num_list[0], &num_list[min]);
swap(&num_list[n-1], &num_list[max]);
for(i = 0; i < n; i++)
printf("%d ", num_list[i]);
putchar(10);
}
return 0;
}
void find_keys(int *arr, int len, int *max, int *min)
{
int i;
*max = *min = 0;
for (i = 1; i < len; i++) {
if (arr[*max] < arr[i])
*max = i;
if (arr[*min] > arr[i])
*min = i;
}
}
void swap(int *a, int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
参考一下吧
首先先找到最大值和最小值的位置,即对应的数组的下表;然后就是交换;