用指针方式编写程序:从键盘输入 10个整型数据,并存入数组,要求将 10 个数中最大的数与第 1 个输入的数交换;将 10 个数中最小的数与最后 1 个输入的数交换。
时间: 2024-10-01 14:13:09 浏览: 35
在用指针方式编写程序时,首先需要定义一个数组来存储输入的10个整数。然后可以按照以下步骤操作:
1. **获取输入并初始化数组**:
使用循环结构,比如`for`循环,提示用户输入10个整数,并通过指针依次存储到数组中。例如,你可以声明一个指向整型变量的指针`int *ptr`,然后递增指针地址。
```c++
#include <stdio.h>
int main() {
int arr[10];
int *ptr = arr; // 指向数组的第一个元素
for (int i = 0; i < 10; ++i) {
scanf("%d", ptr); // 用户输入,ptr作为指针接收
ptr++; // 指针向前移动一位
}
```
2. **查找最大值和最小值**:
创建两个指针分别指向数组的开始和结束,然后用`while`循环找到最大值和最小值。同时更新这两个指针指向的位置。
```c++
int max_num = *ptr; // 初始最大值为第一个元素
int min_num = *ptr; // 初始最小值也为第一个元素
int *max_ptr = ptr;
int *min_ptr = ptr;
while (min_ptr != arr + 9) { // 遍历数组直到倒数第二个元素
if (*min_ptr < max_num) {
min_num = *min_ptr;
min_ptr++;
}
if (*max_ptr > max_num) {
max_num = *max_ptr;
max_ptr++;
}
}
```
3. **交换数值**:
找到最大值和最小值对应的原始位置后,交换`arr[0]`(原第一个输入数)和`*max_ptr`,以及`arr[9]`(原最后一个输入数)和`*min_ptr`。
```c++
int temp = arr[0]; // 临时保存第一个数
arr[0] = *max_ptr; // 将最大值放到第一个位置
*max_ptr = temp;
temp = arr[9]; // 临时保存最后一个数
arr[9] = *min_ptr; // 将最小值放到最后一个位置
*min_ptr = temp;
```
4. **结束程序**:
输出结果后记得关闭`stdin`流。
```c++
printf("交换后的数组:");
for (int i = 0; i < 10; ++i) {
printf("%d ", arr[i]);
}
return 0;
}
阅读全文