Technically, both are correct.
However, if your grammar book or teacher is telling you that "Have you a cat?" is a normal way to ask a question in modern English, you should get rid of them immediately! It is extremely outdated, and sounds wrong to the modern ear.
No native speaker has asked this question in this way for a long time, although you may come across this type of question in books published before about 1960 (!) or hear it in plays and films set in previous centuries.
What you can say, though, is "Have you got a cat?". This idiomatic form is a common alternative to "Do you have a cat?", and can be used in any informal or neutral situation.