C++ 实现找出给定整数中最小值和次小值的程序
以下是一个用 C++ 编写的程序,用于找出给定 `n` 个整数中的最小值和次小值: ```cpp #include <iostream> #include <limits> using namespace std; // 函数用于找出数组中的最小值和次小值 void findMinAndSecondMin(int arr[], int n, int& minVal, int& secondMinVal) { // 初始化最小值为正无穷大,次小值也为正无穷大 minVal = numeric_limits<int>::max(); secondMinVal = numeric_limits<int>::max(); // 遍历数组 for (int i = 0; i < n; ++i) { if (arr[i] < minVal) { // 如果当前元素小于最小值,更新最小值和次小值 secondMinVal = minVal; minVal = arr[i]; } else if (arr[i] < secondMinVal && arr[i] != minVal) { // 如果当前元素小于次小值且不等于最小值,更新次小值 secondMinVal = arr[i]; } } } int main() { int n; cout << "请输入整数的个数: "; cin >> n; int* arr = new int[n]; cout << "请输入 " << n << " 个整数: "; for (int i = 0; i < n; ++i) { cin >> arr[i]; } int minVal, secondMinVal; // 调用函数找出最小值和次小值 findMinAndSecondMin(arr, n, minVal, secondMinVal); if (secondMinVal == numeric_limits<int>::max()) { // 如果没有找到次小值 cout << "最小值是: " << minVal << endl; cout << "没有次小值(所有元素都相同)" << endl; } else { // 输出最小值和次小值 cout << "最小值是: " << minVal << endl; cout << "次小值是: " << secondMinVal << endl; } // 释放动态分配的内存 delete[] arr; return 0; } ``` ### 代码解释 1. **`findMinAndSecondMin` 函数**: - 该函数接受一个整数数组 `arr`、数组元素个数 `n` 以及两个引用参数 `minVal` 和 `secondMinVal`。 - 首先,将 `minVal` 和 `secondMinVal` 初始化为 `int` 类型的最大值。 - 然后遍历数组,若当前元素小于 `minVal`,则更新 `secondMinVal` 为旧的 `minVal`,并更新 `minVal` 为当前元素。 - 若当前元素小于 `secondMinVal` 且不等于 `minVal`,则更新 `secondMinVal` 为当前元素。 2. **`main` 函数**: - 首先获取用户输入的整数个数 `n`。 - 动态分配一个大小为 `n` 的整数数组,并接收用户输入的 `n` 个整数。 - 调用 `findMinAndSecondMin` 函数找出最小值和次小值。 - 根据 `secondMinVal` 是否仍为 `int` 类型的最大值,判断是否有次小值并输出结果。 - 最后释放动态分配的内存。 ######[AI问答 | 807点数解答 | 2026-04-04 19:41:59]
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)30
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- C 语言:按特定顺序读入并输出浮点数、整数和字符(字节豆包 | 106点数解答 | 2024-09-26 00:32:40)319
- C语言:按序读入浮点数、整数、字符并按新顺序输出,附代码实现 (字节豆包 | 108点数解答 | 2024-09-30 22:54:08)334
- C语言:按特定顺序读入并输出浮点数、整数和字符,精确控制小数位(字节豆包 | 155点数解答 | 2024-10-08 22:06:18)328
- C++与Python:按特定顺序输入输出数据并保留浮点数两位小数的实现(字节豆包 | 168点数解答 | 2024-10-08 22:07:03)336
- C语言:按特定顺序读入再输出,含浮点数精确格式处理(字节豆包 | 105点数解答 | 2024-10-08 22:07:29)343
- C++ 混合类型数据格式化输入输出:按指定顺序输出并保留两位小数(字节豆包 | 187点数解答 | 2024-10-16 14:31:08)389
- C语言:实现混合类型数据格式化输入输出,代码超简单!(字节豆包 | 159点数解答 | 2024-10-16 14:32:18)382
- C语言:按特定格式输入并格式化输出整数、实数和字符(字节豆包 | 103点数解答 | 2024-10-24 11:12:53)406
- Java 实现:从点类到圆类,计算圆心坐标(50,30)、半径 4 的圆周长与面积(字节豆包 | 246点数解答 | 2024-11-11 16:36:30)343