1.选B “如果昨晚医生来得早点的话,Mary 将会活着.
虚拟语气中必须用和过去有关的时态,A一定是错的;if引导的从句用了过去(完成)时,主句一定用过去将来时,一定是选B ,至于是不是would have done 就不重要了.
2.otherwise“否则”,确实是引导条件从句,但它的主句一般用将来时态.你想想这句是不是应该这样翻译:“他昨天很忙,否则他将已经来这个会上了”.
3.would rather “宁愿”,后常接虚拟语气,用一般过去时.
这里的would rather 是一般现在时,后面的从句只有表示过去的动作时,才用过去完成时.
你看这里的从句“学生每天至少练习一小时”是过去的动作吗?它只是表示现在,用虚拟语气把它退到一般过去时就可以了.