用c语言实现输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。使用指针写以下函数:(1)求最小数、最大数的位置;(2)进行对换处理;(3)主函数。
时间: 2023-12-04 22:13:09 浏览: 79
好的,下面是 C 语言实现:
```c
#include <stdio.h>
void min_max_pos(int *arr, int len, int *min_pos, int *max_pos) {
int min = *arr, max = *arr;
*min_pos = *max_pos = 0;
for (int i = 1; i < len; i++) {
if (*(arr + i) < min) {
min = *(arr + i);
*min_pos = i;
}
if (*(arr + i) > max) {
max = *(arr + i);
*max_pos = i;
}
}
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void exchange(int *arr, int len) {
int min_pos, max_pos;
min_max_pos(arr, len, &min_pos, &max_pos);
swap(arr, arr + min_pos);
swap(arr + len - 1, arr + max_pos);
}
int main() {
int arr[10];
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
exchange(arr, 10);
printf("对换后的结果为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
函数 `min_max_pos` 用于求出最小数和最大数的位置,参数 `arr` 是整数数组的首地址,`len` 是整数数组的长度,`min_pos` 和 `max_pos` 分别是指向最小数位置和最大数位置的指针。该函数使用指针访问数组元素,遍历整个数组,找出最小数和最大数的位置。
函数 `swap` 用于交换两个整数的值,参数 `a` 和 `b` 分别是指向两个整数的指针,该函数使用指针访问变量,交换两个整数的值。
函数 `exchange` 用于进行对换处理,参数 `arr` 是整数数组的首地址,`len` 是整数数组的长度,该函数先调用 `min_max_pos` 函数求出最小数和最大数的位置,然后调用 `swap` 函数进行对换处理。
在主函数中,首先输入10个整数,然后调用 `exchange` 函数进行对换处理,最后输出对换后的结果。
以上就是使用指针实现输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换的 C 语言代码。
阅读全文