#include <stdio.h> // <stdio.h> contains a definition for `size_t`

// trying to find the minimum odd number in an array with just even numbers (or no numbers) is UB
int oddmin(int *array, size_t length) {
    size_t index = 0;
    while (array[index] % 2 == 0) index++; /* skip even numbers */;
    int minodd = array[index++]; // first odd number
    while (index < length) {
        if (array[index] % 2) {
            if (array[index] < minodd) minodd = array[index];
        }
        index++;
    }
    return minodd;
}

int main(void) {
    int a[] = {1, 2, 3, -4, -5, -6, 7, 8, 9};
    printf("odd minimum of array a is %d.\n", oddmin(a, 9));
    int b[] = {1001};
    printf("odd minimum of array b is %d.\n", oddmin(b, 1));
    int c[] = {2, 2, 2, 2, 2, 2, 2, -3, 2, 2, 2, 2, 2, 2};
    printf("odd minimum of array c is %d.\n", oddmin(c, sizeof c / sizeof *c));
    int d[] = {2, 2, 2, 2, 2, 2, 2, -3, 2, 2, 2, -5, 2, 2};
    printf("odd minimum of array d is %d.\n", oddmin(d, sizeof d / sizeof *d));
    int e[] = {2, 2, 2, 2, 2, 2, 2, -5, 2, 2, 2, -3, 2, 2};
    printf("odd minimum of array e is %d.\n", oddmin(e, sizeof e / sizeof *e));
    int f[] = {42, 42, 42, 42};
    printf("odd minimum of array f is **UB** (%d).\n", oddmin(f, sizeof f / sizeof *f));
    int g[] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
    printf("odd minimum of array g is %d.\n", oddmin(g, sizeof g / sizeof *g));
}
