选C.用于指本该发生而实际上未发生的情况.花已经死了,所以应是表达(花死前)本来应该浇水.shouldhavedone只用于谈论过去情况,主要有两个用法:■用于推测过去已经发生的情况.如:Heshouldhavearrivedbynow.此时他本该到了.Thelettershouldhavearrivedbynow.信现在该到了.Thetrainshouldhavealreadyleft.火车大概已经开走了吧.Ican’tthinkwhyheshouldhavebeensoangry.我想不通他怎么会这样生气.■用于指本该发生而实际上未发生的情况.如:Youshouldhavetoldmesobefore.你早就应该告诉我.Lookatthetime!Weshouldhavebeenatthetheatretenminutesago.瞧都什么时候了!十分钟前我们就该到戏院了.Georgenevershouldhavejoinedthearmy.乔治本来就不该参军的.Youshouldhavetoldmeyouwerecoming.你该事先告诉我你要来呀.Youshouldhavewritten—Iwasgettingworried.你该来封信啊——我都开始担心了.Johnshouldhavelefthaveleftbytomorrow.到明天约翰可能已走了.Ithinktheyshouldhaveconsultedadoctorearlier.我认为他们早就该去看医生了.IshouldhaveleftLondonbefore9,butIdidn’t.我本该在9点以前离开伦敦,但是我没有.Inmyopinion,sheshouldhaveresignedearlier.在我看来,她应当更早一点儿辞职.Youareright;Ishouldhavethoughtofthat.你说得对,我本应当想到这一点的.IshouldhavephonedEdthismorning,butIforgot.今天上午我本该给埃德打电话,但是我忘了.