c - 给定数组中的最小奇数
问题描述
此代码应该在给定数组中找到最小的奇数并将其存储在其中,min
但是当我尝试打印时min
,它总是打印0
.
int smallestodd(int x[5]){
int j;
int k[5];
int p = 0;
int r = 0;
for(int h =0; h<5;h++){
j = x[h] % 2;
if(j == 1){
int temp =x[h];
k[p] =temp;
p++;
}
}
int min = k[0];
while(k[r] !=0){
if(k[r] < min ){
min = k[r];
r++;
}
}
return min;
}
解决方案
假设数组中有一个奇数——假设试图在一个只有偶数(或没有数字)的数组中找到最小奇数是 UB :)
index = 0;
while (arr[index] % 2 == 0) index++; // skip even numbers
min = arr[index++]; // first odd number
while (index < length) {
if (arr[index] % 2) {
if (arr[index] < min) min = arr[index];
}
index++;
}
推荐阅读
- jsf - p:galleria 在底部没有褪色,就像 PrimeFaces 展示页面上的情况一样
- bash - 运行 .command bash 脚本时出现“未指定的异常”
- asp.net - 使用 .NET Core 对象持久性模型查询 DynamoDB GSI 组合键时出现问题
- java - “在 SpringMVC 中找不到类型的返回值的转换器:类 java.lang.Integer”
- python - 为什么只有在使用 input() 方法时才会收到 TypeError?
- python - 如何从默认的 Django 模型重命名模型字段?
- javascript - 使用函数检查项目是否在数组中,然后从数组中删除该项目
- ios - 在 iOS 13 测试版中,应用程序在应用程序启动时崩溃
- git - 从 Github 中删除一个特定的提交
- reactjs - 在反应路由器中单击链接时回调不起作用