c - 给定数组中的最小奇数

标签 c arrays function for-loop

此代码应该在给定数组中找到最小的奇数并将其存储在 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++;
}

关于c - 给定数组中的最小奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54180226/

相关文章:

c++ - 从 cpp 传递到 CUDA 时矩阵显示为空

c - 如何将数组中的字符串分配给字符以获取字符串的长度?

python - 如何在 Pandas 中进行分组,在所有组上使用带有参数的函数并返回参数

编译时的 C 数组对齐检查

c - 按网络顺序将无符号字节数组直接写入 ip.ip_dest 是否安全?

C - 如何在 linux 中使用 API 库

c - Malloc() 和 free() 阻止我在 C 中按值传递结构

c++ - 如何将值赋值到二维 vector 中,如二维数组

Swift UIGestureRecognizer 表示法

sql - 选择进入表计数