'odd'
and 'even'
are integer character constants.
According to the C Standard (6.4.4.4 Character constants)
10 An integer character constant has type int. The value of an integer
character constant containing a single character that maps to a
single-byte execution character is the numerical value of the
representation of the mapped character interpreted as an integer.
The value of an integer character constant containing more than one character (e.g.,
'ab'), or containing a character or escape sequence
that does not map to a single-byte execution character, is
implementation-defined.
So in this call
printf("Its %s number", &num);
you are trying to output the address of the variable num
as an address of a string that is you are trying to output a string but num
does not point to a string.
You have to use string literals instead of the character constants.
What you mean is the following
num = (a % 2) ? "odd" : "even";
printf("Its %s number", num);