c++求数组中非0最小值
时间: 2024-04-30 19:22:11 浏览: 232
可以使用以下代码实现:
```python
def find_min(arr):
non_zero_arr = [x for x in arr if x != 0] # 过滤出非0元素
if not non_zero_arr: # 数组中不存在非0元素
return None
return min(non_zero_arr)
arr = [0, 4, 2, 0, 5, 1, 3, 0]
print(find_min(arr)) # 输出:1
```
该代码先过滤出非0元素,然后在非0元素中取最小值。如果数组中不存在非0元素,返回`None`。
相关问题
定义一个 20 个元素整型数组,所有元素初始化为 0;从键盘上输入非负数到数组,直到输入 负数时或达到 20 个元素时停止;求出数组中非 0 元素的最大值,最小值并输出;最后输出数组中 所有元素及最大值最小值。
好的,我来帮您解决这个问题。
以下是 C++ 代码实现:
```c++
#include <iostream>
#include <limits>
using namespace std;
int main() {
const int N = 20; // 定义数组大小
int arr[N] = {0}; // 初始化为 0
int num = 0; // 用于存储输入的数
int count = 0; // 记录已输入的数的个数
int max_num = INT_MIN; // 初始化为最小值
int min_num = INT_MAX; // 初始化为最大值
while (count < N) {
cout << "请输入一个非负整数:";
cin >> num;
if (num < 0) { // 输入负数时跳出循环
break;
}
arr[count] = num; // 将输入的数存入数组中
// 更新最大值和最小值
if (num > max_num) {
max_num = num;
}
if (num < min_num) {
min_num = num;
}
count++; // 已输入数的个数加 1
}
// 输出非 0 元素的最大值和最小值
cout << "非 0 元素的最大值为:" << max_num << endl;
cout << "非 0 元素的最小值为:" << min_num << endl;
// 输出数组中所有元素及最大值最小值
cout << "数组中所有元素为:";
for (int i = 0; i < N; i++) {
cout << arr[i] << " ";
}
cout << endl;
cout << "最大值为:" << max_num << endl;
cout << "最小值为:" << min_num << endl;
return 0;
}
```
程序运行时,会提示您输入非负整数,直到输入负数或达到数组大小时停止。然后程序会输出非 0 元素的最大值和最小值,以及数组中所有元素及最大值最小值。
阅读全文