A
这是一种虚拟语气的用法
一般是if引导的
主句用might/would/should have done sth,从句用had done sth
表示“要不是...就...”
此句意思是“要不是因为她摔断了腿,她就通过考试了”,
之所以说虚拟,是因为表述的事情都是假设的(假的,与事实相背的,“虚的”),这里即是表达她没有通过考试
一般结构为“if sb had done sth1,sb would/might have done sth2”,这里是一种倒装结构,省略了if ,即变成“had sb(it作为形式主语也可) done sth1,sb would/might have done sth2”
类似的句子还有:
if i had bought the car,i would have lost a big money.
had he brought her back,she might have been caught in the hurricane.
选A吧
整句应该是虚拟语气吧,我似乎从没接触过B的说法,不太清楚。
主句“she might have passed the exam”已经是过去时了,那从句就应该用过去的过去咯。
纯属个人意见~呵呵