首先havedone表示已经做过,这点就不用谈了.
can'thavedone表示以前不可能做某事.
例句
---Where____Margarethaveputtheemptybottles?
---She________themaway.Theymustbesomewhere.
A.can;can'thavethrown
B.must;musthavethrown.
C.must;needn't
D.can;mustthrow
答案为A.第一个句子是一个疑问句而且表示可能性的推测,所以只能用情态动词can或could,第二句的答语表示对过去的推测,所以用can'thavedone.
请看常见的“情态动词+have+过去分词”的用法:
一、“must+have+过去分词”表示对过去发生的事情或状态进行推测,语气比较坚定,通常只用于肯定句.如:
Itmusthaverainedlastnight,forthegroundiswet.
Youmusthavebeenmadtospeaktotheservant.
二、“can/could+have+过去分词”表示对过去某种情况的怀疑或不确定.can和could一般用于否定句和疑问句,could的语气较can弱.如:
Ididn'tseeheratthemeetingthismorning;shecan't/couldn'thavespokenatthemeeting.
Hecan'thavefinishedtheworksosoon.
三、“may/might+have+过去分词”表示对已发生的动作或存在的状态进行不肯定的推测,might的语气比may弱一点.这种结构主要用于肯定句和否定句,疑问句改用can或could.如:
Theymaynothaveknownitbeforehand.
Youmighthavereadaboutitinthepapers.
四、“need+have+过去分词”表示过去做了不必做或不需要做的事情,或过去做某事纯属多余.如:
Needtheyhavedoneitlastweek?
Ineedn'thaveboughtsomuchwine—onlyfivepeoplecame.
五、“should/oughtto+have+过去分词”表示过去本该做某事但没做,其否定式表示过去不该做某事但做了,这种句式含有不满或责备之意,oughtto的语气比should强一些.如:
Yououghtto/shouldhavestudiedharder.你本应该更努力学习的.(但没有)
Heoughtn'tto/shouldn'thavedonethat.他本来就不该做那件事.(可是做了)
六、“would+have+过去分词”表示对过去的某种情况进行猜测,或本来要做某事却因某种原因未做成,通常用来说明某一情况,但不像用should或oughtto那样含有责备之意.如:
Iguessthepoetwouldhavebeenabouttwentywhenshewroteherfirstpoem.
Anotherworkerwouldn'thaveactedlikethat.