我目前在英国生活,我以前在国内也弄不懂这两个的区分,现在我能区分它们了,因为用得多了就懂了。did 是do和does 的过去式,do does did 它们后面的动词是永远不变的,用did/didn’t 表达时用于事情发生在昨天或者大半天之前,如:what did you eat last night?如果你在今天晚上问你的朋友今天早上的事:what time did you get up this morning?have/has 是永远跟过去式分词,一般用来问三两个小时之内发生的事,如中午饭时间后回到公司,你问你同事:have you eaten your lunch?也可以用did you have your Lunch. 但大多数人会用have you. ( I am so hungry. I haven’t had my lunch. Or I haven’t eaten my lunch) 记住 do does did 后面动词原形,have had 后面动词分词,不用纠结为什么,记住规律就好,这两个口语用得时候很多。用久了就成习惯了。口语如果用have has 时不记得动词分词也不要紧,用动词原形代替也可以,人家能明白你要表达什么就行,如果学校考试就会被扣分了.