1.must 表示推测时,其后的反意疑问句要根据must后的谓语动词一致.
你查到的几个句子有两个对,中间那个不对.
You must have studied English for three years, haven't you? / didn't you?
这个句子只能用haven't , 不可以用didn't.
2.在前面的陈述句中有具体的过去的时间状语时才用didn't .所以第三个句子是正确的.
He must have finished it yesterday, didn't he?
那么你的单选题:He must have learn English for three years,___?
A.hasn't he B.haven't he C.mustn't he D.didn't he
正确答案就是A.
如果有疑问就hi我.祝你学习愉快!