(a) Have you taken your lunch?
(b) Have you had your lunch?
(c) Do you have your lunch?
(d) Do you eat your lunch?
a. Might be ok in British English, but I never use this in American English.
b. I use this one 90% of the time. This is because the afternoon is not finished YET, or because it is STILL afternoon. (Study the capitalized words)
c. Never use this one
d. The grammar is fine, but it doesn't make sense. If one doesn't eat their lunch, what do they do with it? Instead of "Do", change it to "Did" and this makes more sense. You can use this in the afternoon and in the evening of the same day that you ate lunch. For morning, you can use it if it refers to lunch eaten yesterday or another day in the past.
Looking for ESL work?: Try our EFL / TOEFL / ESL Jobs Section!
As Jaradite has said, (a) isn't used in AmEng, except in the case of "do you take your lunch [from home], or do you eat in the cafeteria?'
People are waiting to help.
Related forum topics: