输入10个整数,将其中最小的数与第1个数交换,把最大的数与最后一个数交换。写3个函数:1. 输入10个数;2. 进行处理;3. 输出10个数。(要求使用指针或引用方法处理)
时间: 2024-12-25 18:29:38 浏览: 3
在C++中,我们可以使用指针或引用来实现这个功能。这里我会提供三个函数的示例代码:
```cpp
#include <iostream>
// 函数1:输入10个整数并存储到数组中
void inputNumbers(int arr[], int size) {
for (int i = 0; i < size; ++i) {
std::cout << "请输入第 " << (i + 1) << " 个数:";
std::cin >> arr[i];
}
}
// 函数2:找到最小值、最大值,并交换它们的位置
void swapMinMax(int* start, int* end) {
if (*start > *end) { // 如果第一个元素大于最后一个元素
int temp = *start;
*start = *end;
*end = temp;
} else {
int* minPtr = start, maxPtr = start;
while (minPtr != end - 1 && maxPtr != end) {
if (*minPtr < *minPtr + 1) {
minPtr++;
} else if (*maxPtr > *maxPtr + 1) {
maxPtr++;
} else {
break;
}
}
if (minPtr != end - 1) { // 如果未到达数组末尾就找到了更小的数
int temp = *start;
*start = *minPtr;
*minPtr = temp;
}
if (maxPtr != start) { // 如果未到达数组开始就找到了更大的数
int temp = *end;
*end = *maxPtr;
*maxPtr = temp;
}
}
}
// 函数3:输出处理后的10个数
void outputNumbers(const int arr[], int size) {
for (int i = 0; i < size; ++i) {
std::cout << "第 " << (i + 1) << " 个数是:" << arr[i] << std::endl;
}
}
int main() {
int numbers[10];
inputNumbers(numbers, 10);
swapMinMax(&numbers[0], &numbers[9]); // 使用指针操作数组
outputNumbers(numbers, 10);
return 0;
}
```
在这个例子中,`inputNumbers`函数用于获取用户输入,`swapMinMax`函数通过两个指针找到最小和最大值并交换位置,最后`outputNumbers`函数显示结果。
阅读全文