先给结论:英语没有专门的虚拟动词,它用「时态倒退一步」来标记「我说的不是真的」——与现在事实相反,if 从句把时态退成过去时(be 动词一律用 were),主句配 would + 原形;与过去事实相反,退成过去完成时 had done,主句配 would have + 过去分词。中文只靠「要是……就好了」「幸亏没……」这些虚词和语境就把假设讲清楚,动词一个字都不用变,所以中国学习者不是不懂虚拟,而是忘了让动词也「变个脸」来报警:这句话是假设。
下面的 25 道题按「基础 · if 虚拟两步退 → 进阶 · wish、as if、would rather、It's high time → 挑战 · 错综时态、含蓄虚拟与 suggest/insist」分为三组,每道题点击选项后立即批改,并给出中文解析:统一的解题框架就是倒退法,做完你会发现所谓虚拟语气,只是「倒退一步、再倒退一步」的把戏。
虚拟语气 25 题小测
题目每轮 10 道,共 25 道。完成一轮即可继续;所有题目和答案也列在下方。
基础 · if 虚拟两步退
If I ___ you, I would apologize to her right away.
全部题目、答案与解析完成练习后展开核对。
1. If I ___ you, I would apologize to her right away.
- was
- were
- am
正确答案: were · 与现在事实相反(我不可能是你),时态倒退一步用过去时;虚拟句里 be 动词不分人称一律用 were,这是考试铁律。口语里 If I was you 偶有所闻,但高考、四级、考研一律以 were 为准,看到 you 也别犹豫。
2. If he ___ here now, he would know exactly what to do.
- were
- is
- had been
正确答案: were · now 点明与现在相反:他现在不在这儿,倒退一步用 were,主句 would know 照应。had been 留给「与过去相反」的句型,时间轴对不上就坚决不选——倒退一步是相对「事实所在的时间」而言的。
3. If she ___ more free time, she would learn the piano.
- has
- had
- will have
正确答案: had · 与现在相反(她其实没时间),has 倒退一步变 had,主句 would + 原形照应。中文「如果有空就学钢琴」看不出真假,英语的 had 就是那个「这是假设」的暗号,做题时看到主句 would 立刻回头找倒退。
4. If you had told me earlier, I ___ you a hand.
- would give
- would have given
- had given
正确答案: would have given · 与过去相反(你当时没说),从句用 had done,主句倒退两步变 would have + 过去分词:would have given。口诀「从句 had done,主句 would have done」,两边都要退,只退一边就是错误选项 would give 的来源。
5. She would have caught the early train if she ___ up earlier.
- got
- would get
- had gotten
正确答案: had gotten · 主句已经给出 would have caught,锁定与过去相反,if 从句必须配套 had gotten。注意 if 从句里永远不填 would——倒退发生在从句,would 只出现在主句,这是虚拟句最常见的错配。
6. If they had set off at eight, they ___ there well before noon.
- would get
- would have got
- had got
正确答案: would have got · had set off 表明与过去相反(他们没在八点出发),主句按套餐配 would have + 过去分词:would have got。中文「要是八点出发就好了」把假设藏在「要是」里,英语则把它摊进两个动词形态里,两边都要核对。
7. If I ___ about the party, I would have invited you too.
- know
- knew
- had known
正确答案: had known · 主句 would have invited 指向过去(你其实没被邀请),从句倒退两步用 had known。看到「would have + 分词」就条件反射配「had done」,这是虚拟语气第一套餐,也是高考和四级常考的形式。
8. I wish I ___ taller — then I could try out for the team.
- am
- were
- have been
正确答案: were · wish + 过去时表与现在相反的愿望(我希望自己更高,可事实如此不能改),be 动词照旧一律 were。wish 后面的倒退是对「现在」退一步,愿望落空的怅惘全在这一步里。
9. I wish I ___ her advice last month instead of ignoring it.
- followed
- had followed
- would follow
正确答案: had followed · Wish 后面的形式取决于所希望改变的情况:I wish I knew 表示现在的愿望,I wish I had known 表示过去的遗憾,I wish you would call 表示希望对方改变行为。Would 并非永远不能出现在 wish 从句中。
10. He speaks English as if he ___ a native speaker.
- is
- were
- had been
正确答案: were · as if 从句与现在事实相反(他不是母语者)时倒退一步用 were,与 if 虚拟同一套逻辑。注意:如果情况可能是真的(It looks as if it is going to rain),不倒退也行——「假想才倒退,可能不勉强」是这题的分水岭。
11. She talked about the film as if she ___ it herself.
- has seen
- had seen
- saw
正确答案: had seen · talked 发生在过去,「看过电影」比 talk 更早,倒退两步用 had seen。as if 的倒退以主句时间为锚点:与主句同时退一步,先于主句退两步,锚点判断和叙事时态一脉相承。
12. I'd rather you ___ smoke in the house.
- didn't
- don't
- not
正确答案: didn't · would rather + 从句(指现在或将来的事)倒退一步用过去时:I'd rather you didn't smoke。中文「我宁愿你别在屋里抽烟」没有时态痕迹,英语却要求 you 后面跟 didn't 而不是 don't,这一步倒退表达的是「委婉的不情愿」。
13. I would rather ___ at home than go to that noisy party.
- stay
- to stay
- staying
正确答案: stay · would rather 后面直接跟不带 to 的动词原形,结构是 would rather do A than do B。这题考的是词型不是时态:一看到 to 或 -ing 就想当然,恰恰掉进「rather 后接不定式」的经典误导选项。
14. I'd rather you ___ me the truth yesterday.
- didn't tell
- hadn't told
- not tell
正确答案: hadn't told · yesterday 说明是对过去的后悔:would rather + 主语 + had done,与 wish + had done 同构。和上题对照——指现在退一步(didn't),指过去退两步(hadn't),时间状语是唯一的裁判。
15. You've been watching screens for hours. It's high time you ___ to bed.
- go
- went
- will go
正确答案: went · It's (high) time + 主语 + 过去时,是虚拟语气里最短小的固定句型:went。high 只加强语气「早该睡了」,不改变形式。注意没有 to go 的余地——这个句型用「时态倒退」表达「本应已经发生」,比 should 更不耐烦。
16. I wish you ___ make so much noise while I'm on calls.
- wouldn't
- didn't
- not
正确答案: wouldn't · wish + would(n't) 专门抱怨别人反复的讨厌行为,盼望对方「肯改」:I wish you wouldn't make so much noise。与上题 wish + 过去时(抱怨状态)不同,这条针对「可控的行为」,语气是吐槽而不是怅惘。
17. If only we ___ enough time to prepare for the show!
- had
- have
- would have
正确答案: had · if only(要是……该多好)与 wish 同族:与现在相反倒退一步用 had。它比 I wish 更强烈,常用于感叹句,高考和考研翻译中,「但愿」常对应 if only / wish 加倒退结构。
18. If he hadn't missed the last bus, he ___ here with us now.
- were
- would be
- would have been
正确答案: would be · 错综时态(混合虚拟):从句与过去相反(hadn't missed),主句却与现在相反(now),各退各的时间轴——主句用 would + 原形:would be。中文「要不是赶不上末班车他早到了」时间两层,动词零变化,英语必须分别用 had done 和 would be 各自报警。
19. If she ___ a careful driver, she wouldn't have crashed last night.
- was
- were
- had been
正确答案: were · 反方向的错综时态:「开车小心」是延续到现在的性格特质(与现在相反用 were),撞车却发生在昨晚(wouldn't have crashed)。别被 last night 勾着全选 had done——从句管的是「她是什么样的人」,锚点在现在。
20. But for your help, I ___ the deadline last night.
- didn't meet
- wouldn't have met
- hadn't met
正确答案: wouldn't have met · but for = without(要不是),它把整个 if 从句压缩成一个名词短语:本句等于 If it had not been for your help。与过去相反,主句照旧 would have done:wouldn't have met。含蓄虚拟的解题第一步,永远是把介词短语还原成 if 从句。
21. Without his advice, we ___ the wrong way.
- didn't go
- would have gone
- had gone
正确答案: would have gone · without + 名词 = 「要是没有……」,还原成 If we had not had his advice 后,与过去相反的立即搭配 would have gone。做完题别忘了对照现实:他的建议确实有了、我们确实没走错——虚拟句的隐含意义恰恰是现实。
22. He hid behind the curtain quickly; otherwise the guard ___ him.
- saw
- would see
- would have seen
正确答案: would have seen · otherwise(否则)承接前文的真实事实「藏得快」,对未发生的过去进行假设:否则卫兵「本来会看见他」,与过去相反用 would have seen。otherwise 是含蓄虚拟的连词版,规则一样:先还原 if 从句,再定时间轴。
23. The teacher suggested that every student ___ the essay once more.
- read
- reads
- reading
正确答案: read · suggest(建议)类的 that 从句用「(should) + 动词原形」,should 常被省略:suggested that every student (should) read。正因为 should 被省略,主语是三单也看不见 -s——reads 就是给「时态一致」习惯设的埋伏。
24. The doctor insisted that Mr. Lin ___ smoking at once.
- stops
- stop
- stopped
正确答案: stop · insist 表「坚决要求」时,从句同样用 (should) + 原形:insisted that Mr. Lin (should) stop。注意一词两副面孔——insist 表「坚称」时从句照常用真实时态(He insisted that he was innocent),suggest 表「暗示」同理,考的就是先辨动词义。
25. His suggestion that the vote ___ put off was turned down.
- be
- is
- will be
正确答案: be · suggestion 的名词同位语从句同样继承虚拟套餐:that the vote (should) be put off,被动也用原形 be。这类题的辨认顺序:先找到 suggestion/order/request/demand 等「要求类」名词或动词,再让后面从句一律交出时态,换成原形。
将此测验布置给全班
免费使用,学生无需注册账号。
规则速览:一张倒退时间表
虚拟语气的全部形态可以压缩成一张表:先确定「假设」与哪个时间相反,再决定退几步。与现在相反:从句过去时(were 通用),主句 would + 原形;与过去相反:从句 had done,主句 would have done;与将来相反(可能性很小):从句 should do / were to do,主句 would + 原形。从句永远是「倒退」的一方,主句永远是「would」的一方,两边的时间轴还要分别核对——这就是错综时态的解法。
- if 与现在相反:did / were → would do。(If I were you, I would go.)
- if 与过去相反:had done → would have done。(If you had called, I would have come.)
- wish:与现在相反 + did;与过去相反 + had done;抱怨他人 + would do。
- as if:假想才倒退,可能不倒退(It looks as if it is going to rain 合法)。
- would rather + 从句:指现在 did,指过去 had done。
- It's (high) time + 从句:一律过去时。
- suggest / insist / order / demand + that 从句:(should) + 动词原形,should 常省略。
做题第一步永远是「找锚点时间」:句子里有 now 还是 yesterday / last night?锚点决定退一步还是退两步,很多丢分都出在锚点判断上。
常见陷阱:五个最容易丢分的句型
以下五类是高考、四级和考研虚拟语气的高频失分点,做完练习后逐条对照,看自己踩了哪几条。
- ✗ If I would have known, I would have helped. → ✓ If I had known…(would 不能住进 if 从句)
- ✗ I wish I can fly. → ✓ I wish I could fly.(wish 后必须倒退,can 变 could)
- ✗ If you had taken the medicine, you wouldn't be so sick now. 误判为全过去 → 保留 be 而不是 have been(从句过去、主句现在的错综句)
- ✗ He suggested that I should to see a doctor. → ✓ …that I (should) see a doctor.(should 后接原形,不带 to)
- ✗ It's high time we go home. → ✓ It's high time we went home.(这个句型只认过去时)
为什么中文母语者总在这里出错:假设不用动词买单
中文表达虚拟完全依赖虚词和语境:「要是早点遇到你就好了」「否则我就惨了」——动词「遇到」「惨」不发生任何变化,假设身份由「要是」「就好了」全包。英语的报警系统却多开了一条道:除了 if、otherwise 这类连接词,动词自己也要变形示警(had met / would have been)。中文母语者读题时往往「感觉」已经到位,手写的句子却只有连接词在孤军奋战,动词一个都没退——这是虚拟语气常见的失分原因。
第二道坎是倒退的方向感:中文「与现在相反」和「与过去相反」的区分靠时间副词(今天/昨天),英语却要动词时态自证。所以 If I knew 和 If I had known 在中文里都可能译成「如果我知道」,考点却完全不同——前者假设「我现在不知道」,后者假设「当时我不知道」。解决办法是把倒退法练成反射:先圈时间锚点,再机械地「退一格」,不给中文语感插嘴的机会。
背熟两个「万能反问」:这事是真的吗?——不是,就倒退。倒退几步?——退到时间锚点的前一格。
如何有效练习:把倒退练成条件反射
虚拟语气的规则量其实不大,失分多半在「想不起来用」。建议每天完整做一遍上面的 25 题,连续一周,做题时对每题都口头复述「与什么相反、退几步、主句配什么」,让套餐式搭配长在语感里;然后把错题按「锚点错配 / would 进了从句 / 混合时态没拆句」三类归档,专门回炉。
虚拟语气在写作里也极易自查:把你写的英语作文或翻译贴进 PromGee 的免费语法检查工具,它会标出可能有问题的动词时态并解释规则依据,适合作为写完后的一道核对——但虚拟语气的判断仍需要你自己复核。
继续练习
常见问题
虚拟语气里的 be 动词为什么不分人称都用 were?
If I was 在标准非正式及许多中性语境中都很常见。If I were 是虚拟条件的传统形式,在正式写作中经常使用;不能把 was 一律判为错误。
wish + 过去时和 wish + 过去完成时怎么选?
看愿望对着哪个时间:与现在相反用过去时(I wish I had more time,现在没时间),与过去相反用 had done(I wish I had studied harder,当初没努力)。句末有 last year、then 这类过去锚点的,通常是 had done。
suggest 后面到底接 doing 还是 (should) do?
分两种:suggest 表「建议」时,若接 that 从句必须用 (should) + 动词原形(suggest that he see a doctor);若主语直接接动作则用 doing(suggest going out)。表「暗示、表明」时(His silence suggested that he was angry)从句用正常时态,不倒退。
英语学习平台
在 PromGee 英语学习平台上练习全部 13 个类别。题目与您的水平相匹配,每道题的答案都有讲解,学习进度会保存到您的账号中。