Q:

Which one is the best for this exercise and why

We should answer “Yes” first to the question “May/Can I help you?”, right? So I think the answer is B. Am I right?

A:

B is correct.  C is incorrect.  However, A is an interesting case.
As an exchange, the following is actually quite common:

"Can I help you?"
  "I want a pair of shoes for my son"

Syntactically, the answer given doesn't match the question, but idiomatically, "Can I help you?" is often interpreted as "How can I help you?".
That being said, for a simple multiple-choice exercise such as this one, your reasoning is correct and you should choose B. If you were actually using any of these in real conversation, though, you should be aware that "what do you want" is quite strongly associated with a tone of hostile dismissal, and another phrasing would often be better-received.

