用指针实现:从键盘输入十个整数,将最大的调到最后,最小的调到最前
时间: 2024-10-15 11:09:17 浏览: 30
在C++中,你可以使用指针来实现这个功能。这里是一个简单的示例程序,它首先读取十个整数,然后通过两个指针(一个指向最大值,另一个指向剩余数组的开始)来交换元素位置:
```cpp
#include <iostream>
using namespace std;
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
const int size = 10;
int arr[size], max_num, min_num;
int* start = &arr[0];
int* end = start + size - 1; // 最后一个元素的指针
// 输入十个整数
for (int i = 0; i < size; ++i) {
cout << "Enter number " << i+1 << ": ";
cin >> arr[i];
}
// 找出最大值和最小值
max_num = *start;
min_num = max_num;
for (int i = 1; i < size; ++i) {
if (arr[i] > max_num) {
max_num = arr[i];
} else if (arr[i] < min_num) {
min_num = arr[i];
}
}
// 将最大值移到最后,最小值移到最前
while (max_num != arr[end]) {
if (arr[end] == min_num) {
break; // 如果找到最小值,跳出循环
}
if (arr[start] == max_num) { // 如果当前最大值不在第一个位置,则交换
swap(&arr[start], &arr[end]);
} else if (arr[end] > arr[start]) { // 否则,如果终点处比起点大,移动最大值
--end;
} else { // 否则,移动起点直到找到大于终点的值
++start;
}
}
// 输出排序后的数组
for (int i = 0; i < size; ++i) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
运行这段程序后,用户会依次输入10个整数,然后输出的数组将会按照降序排列。
阅读全文