用指针实现:由键盘输入10个整数,将最大的调到最后,最小的调到最前。 输入 10个整数。 输出 最大的调到最后,最小的调到最前。
时间: 2024-10-09 18:12:40 浏览: 14
在C++中,你可以通过遍历数组并利用两个指针来实现这个功能。以下是简单的步骤:
1. **初始化**:首先,创建一个长度为10的动态数组,让用户依次输入10个整数,并用指针`start`指向数组的第一个元素(即最小值),`end`指向最后一个元素。
```cpp
int* arr = new int[10];
int start = 0;
int end = 9;
```
2. **获取用户输入**:然后使用循环让用户输入这10个数字,并存储在`arr`中。
```cpp
for (int i = 0; i < 10; ++i) {
std::cout << "请输入第" << (i+1) << "个整数:";
cin >> arr[i];
}
```
3. **找到最大值和最小值**:设置两个指针,一个`max_ptr`指向`end`,另一个`min_ptr`指向`start`。同时,记录当前的最大值和最小值。
4. **比较和交换**:在一个循环里,如果`min_ptr`指向的值大于`arr[end]`(`max_ptr`),则更新最小值;反之,如果`max_ptr`指向的值小于`arr[start]`(`min_ptr`),则更新最大值。同时,将它们各自向中心移动一步。
```cpp
while (start < end) {
if (arr[min_ptr] > arr[end]) {
std::swap(arr[min_ptr], arr[end]);
min_ptr++;
} else if (arr[max_ptr] < arr[start]) {
std::swap(arr[max_ptr], arr[start]);
max_ptr--;
} else {
// 如果找到相同的最小值或最大值,则继续搜索
min_ptr++;
max_ptr--;
}
}
```
5. **显示结果**:最后,打印出调整后的数组,注意由于数组从头开始逆序了,所以需要反向输出。
```cpp
std::cout << "排序后的数组:";
for (int i = end; i >= start; --i) {
std::cout << arr[i] << " ";
}
```
6. **释放内存**:完成操作后别忘了删除分配的内存。
```cpp
delete[] arr;
```
阅读全文