酷代码 AI
菜单
服务商

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]