c语言中,用指针和数组输入 10 个整数,将其中最小的数与第一个数互换,把最大的数与最后一 个数互换。写三个函数分别实现:(1)输入 10 个数;(2)实现具体互换处理, 并通过指针型参数的间接运算返回最大值和最小值;(3)输出10 个数。
时间: 2024-12-16 19:15:25 浏览: 27
C语言实现数组逆序数排列的示例代码.pdf
在 C 语言中,我们可以编写如下的函数来完成这个任务:
```c
#include <stdio.h>
// 函数1:输入10个整数到数组
void input_numbers(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("请输入第 %d 个数: ", i + 1);
scanf("%d", &arr[i]);
}
}
// 函数2:找到并交换最小值和最大值,通过指针间接操作返回最大值和最小值
void swapMinMax(int* min_index, int* max_index, int arr[]) {
int min_val = arr[0];
int max_val = arr[0];
*min_index = 0;
*max_index = 0;
for (int i = 1; i < size - 1; i++) {
if (arr[i] < min_val) {
min_val = arr[i];
*min_index = i;
}
if (arr[i] > max_val) {
max_val = arr[i];
*max_index = i;
}
}
// 将最小值和第一个数交换
int temp = arr[*min_index];
arr[*min_index] = arr[0];
arr[0] = temp;
// 将最大值和最后一个数交换
temp = arr[size - 1];
arr[size - 1] = arr[*max_index];
arr[*max_index] = temp;
}
// 函数3:输出10个数
void output_numbers(int arr[], int size) {
printf("\n排序后的数组: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int numbers[10];
input_numbers(numbers, 10);
int min_idx, max_idx;
swapMinMax(&min_idx, &max_idx, numbers);
output_numbers(numbers, 10);
return 0;
}
```
在这个代码中,`input_numbers`函数用于接收用户输入,`swapMinMax`函数寻找数组中的最小值和最大值,并通过指针进行交换,最后`output_numbers`函数用于显示结果。
阅读全文