用指针方式编写程序,从键盘输入10个整数,并存入数组,要求将10个数中最大的数与第1个输入的数交换,将10个数中最小的数与最后一个输入的数交换。
时间: 2024-09-29 18:14:22 浏览: 50
在C语言中,使用指针操作数组可以实现这个需求。首先,你需要定义一个动态数组并获取用户输入的10个整数。然后,通过指针遍历数组找到最大值和最小值,最后交换它们的位置。以下是简单的步骤:
1. 定义一个大小为10的整型数组,并声明两个指针,一个指向第一个元素,另一个指向最后一个元素。
```c
#include <stdio.h>
int* array = NULL; // 预先分配空间
int first_index = 0;
int last_index = 9;
void input_numbers() {
array = (int*)malloc(10 * sizeof(int)); // 动态分配内存
for (int i = 0; i < 10; ++i) {
scanf("%d", &array[i]);
}
}
void find_min_max() {
int max_num = array[0], min_num = array[0];
for (int i = 1; i <= last_index; ++i) {
if (array[i] > max_num) {
max_num = array[i];
} else if (array[i] < min_num) {
min_num = array[i];
}
}
}
void swap_elements() {
if (max_num != array[first_index]) { // 检查是否需要交换
int temp = array[first_index]; // 临时保存最大值
array[first_index] = max_num;
array[last_index] = temp; // 将最大值放到最后一个位置
}
if (min_num != array[last_index]) {
int temp = array[last_index]; // 临时保存最小值
array[last_index] = min_num;
array[first_index] = temp; // 将最小值放到第一个位置
}
}
int main() {
input_numbers();
find_min_max();
swap_elements();
// 打印数组验证结果
for (int i = 0; i <= 9; ++i) {
printf("%d ", array[i]);
}
free(array); // 释放内存
return 0;
}
```
阅读全文