c++用指针输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数;①输入10个数;②进行处理;③输出10个数
时间: 2024-12-14 09:18:34 浏览: 4
输入10个整数,将其中最小的数与第一个数对换
5星 · 资源好评率100%
在 C++ 中,我们可以编写如下的三个函数来完成这个任务:
1. **输入10个数** 的函数:
```cpp
#include <iostream>
void inputNumbers(int arr[], int n) {
std::cout << "请输入10个整数:\n";
for (int i = 0; i < n; ++i) {
std::cin >> arr[i];
}
}
```
在这个函数里,我们接受一个整数数组 `arr` 和其长度 `n`(这里是10),然后通过循环提示用户逐个输入数值。
2. **进行处理** 的函数:
```cpp
void swapMinMax(int* begin, int* end) {
if (*begin > *end) { // 防止溢出,如果开始大于结束则交换
int temp = *begin;
*begin = *end;
*end = temp;
}
int minIndex = begin;
for (int* p = begin + 1; p < end; ++p) {
if (*minIndex > *p) {
minIndex = p;
}
}
if (minIndex != begin) { // 如果找到了比开始小的数,则交换
int temp = *begin;
*begin = *minIndex;
*minIndex = temp;
}
int maxIndex = begin;
for (int* q = begin + 1; q < end; ++q) {
if (*maxIndex < *q) {
maxIndex = q;
}
}
if (maxIndex != end - 1) { // 如果找到了比结束大的数,则交换
int temp = *end;
*end = *maxIndex;
*maxIndex = temp;
}
}
```
这个函数会找到数组中的最小值和最大值,并将它们与数组的第一个元素和最后一个元素进行交换。
3. **输出10个数** 的函数:
```cpp
void printArray(const int arr[], int n) {
std::cout << "处理后的数组为:\n";
for (int i = 0; i < n; ++i) {
std::cout << arr[i] << " ";
}
std::cout << "\n";
}
```
此函数用于打印处理后的数组。
将这三者组合起来,完整的程序如下:
```cpp
#include <iostream>
using namespace std;
//... 定义上面的三个函数
int main() {
const int NUMBERS = 10;
int numbers[NUMBERS];
inputNumbers(numbers, NUMBERS);
swapMinMax(numbers, numbers + NUMBERS - 1); // 数组的最后一个元素是地址加9
printArray(numbers, NUMBERS);
return 0;
}
```
阅读全文