1.C
由后句but...可知前句为对过去动作的虚拟,所以用wouldhavedonesth结构。
单句出现的虚拟语气,除了ifonly引导的句子之外,都是主句。
2.B
可以省略if的条件状语从句中,被提前的句首词只能是should/were/had,排除ACD.
此题为对将来动作的虚拟。
3.A
sothat的虚拟语气,要求其从句谓语由“情态动词+动词原形”构成。
4.A
该题从wouldyouhavecalledherupifithadbeenpossible?来看,是对过去动作的虚拟,所以but后面所表示的实际情况发生在过去,所以用过去进行时为最佳答案。
5.B
该题从前句Tomwouldbuythatbicycle是对现在动作的虚拟,所以but后面引导的表示实际情况的句子时态为一般现在时。
6.A
从句意来看,答句是对将来动作的虚拟,所以主句用woulddosth.
7.A
haditnotbeenforthepoliceman=ifithadnotbeenforthepoliceman,表明是对过去的虚拟,所以主句用wouldhavedonesth.
8.D
此题but之后为实际的现在的情况,并非虚拟,所以只用have即可。