This is because everything except the leftmost value in the macro is VOWELSnot tested with c. The macro expands to:
c == 'a' || 'e' || ...
So, basically, since a non-zero expression is checked (i.e. the numerical value of the character 'e'), which is always evaluated as 1.
What should be a macro:
#define VOWEL(c) ((c) == 'a') || ((c) == 'e') || ((c) == 'i') || ((c) == 'o') || ((c) == 'u') || ((c) == 'A') || ((c) == 'E') || ((c) == 'I') || ((c) == 'O') || ((c) == 'U')
And then you just use:
if(VOWEL(c))
{
...
}