输人8个整数,将其中最大的数与第一个数对换,最小的数与最后一个数对换。C语言用指针写
时间: 2023-06-27 10:07:28 浏览: 98
C语言程序设计-输入一维数组的8个元素,并将最大值与最后一个数交换
5星 · 资源好评率100%
以下是用指针实现的C语言代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a[8];
int *max = &a[0], *min = &a[0];
printf("请输入8个整数:\n");
for (int i = 0; i < 8; i++)
scanf("%d", &a[i]);
for (int i = 1; i < 8; i++) {
if (*max < a[i]) max = &a[i];
if (*min > a[i]) min = &a[i];
}
swap(max, &a[0]); // 最大值与第一个数对换
if (min == &a[0]) min = max; // 避免最小值是第一个数的情况
swap(min, &a[7]); // 最小值与最后一个数对换
printf("处理结果如下:\n");
for (int i = 0; i < 8; i++)
printf("%d ", a[i]);
return 0;
}
```
代码过程简介:
1. 定义一个整型数组 `a` 和两个指向整型的指针 `max` 和 `min`,初始时指向第一个元素。
2. 通过循环遍历数组,找出最大值和最小值,将其对应的指针赋值给 `max` 和 `min`。
3. 将最大值与第一个数对换,将最小值与最后一个数对换。
4. 输出处理结果。
注意:在交换最小值和最后一个数的时候,如果最小值本来就是第一个数,那么交换后最小值应该指向第一个数交换后的位置,即最大值的位置。否则,最小值指向的就是最后一个数交换后的位置,不需要做额外的处理。
阅读全文