50 bài tập thì hiện tại hoàn thành: trắc nghiệm, có đáp án chi tiết

Trả lời nhanh

Thì hiện tại hoàn thành có cấu trúc S + have/has + V3/ed, dùng cho hành động bắt đầu trong quá khứ và còn liên quan đến hiện tại. Dấu hiệu thường gặp: since, for, yet, already, just, ever, never, so far, recently. Gặp mốc thời gian đã kết thúc như yesterday, last week, ago thì phải dùng quá khứ đơn. Bên dưới là 50 câu luyện tập có đáp án giải thích.

Tóm tắt nhanh thì hiện tại hoàn thành

Trước khi làm bài, các em nhớ lại ba ý cốt lõi: cấu trúc, cách dùng và dấu hiệu nhận biết. Nắm chắc ba ý này là đủ xử lý phần lớn câu trắc nghiệm.

Dạng câu Cấu trúc Ví dụ
Khẳng định S + have/has + V3/ed We have lived here for ten years.
Phủ định S + have/has + not + V3/ed He hasn’t answered my message.
Nghi vấn Have/Has + S + V3/ed …? Have you finished the report?
Câu hỏi Wh- Wh- + have/has + S + V3/ed …? How long have they known each other?

Bốn cách dùng chính

  • Kéo dài đến hiện tại: hành động bắt đầu trong quá khứ và vẫn tiếp diễn (I have studied English since 2020).
  • Trải nghiệm: đã từng hoặc chưa từng làm gì tính đến nay (Have you ever seen a whale?).
  • Kết quả còn lại ở hiện tại: hành động vừa xong nhưng hậu quả còn đó (I have lost my key, so I can’t get in).
  • Hành động vừa xảy ra, chưa rõ thời điểm: người nói quan tâm đến kết quả chứ không quan tâm “khi nào” (Someone has taken my pen).
Trục thời gian so sánh thì hiện tại hoàn thành (từ mốc since đến hiện tại) với quá khứ đơn (một mốc đã qua)
Hiện tại hoàn thành nối quá khứ với hiện tại; quá khứ đơn chỉ một mốc đã kết thúc.

Dấu hiệu nhận biết và vị trí trạng từ

  • since + mốc thời gian (since 2019, since Monday, since I was a child) và for + khoảng thời gian (for three years, for a long time).
  • already, just, ever, never thường đứng giữa have/has và V3: He has just left.
  • yet đứng cuối câu phủ định hoặc nghi vấn: She hasn’t called yet.
  • so far, up to now, recently, lately, this week/month (khoảng thời gian chưa kết thúc).
  • the first/second time, the best/most … ever đi với hiện tại hoàn thành ở vế sau.

Muốn ôn kỹ hơn về hai từ hay bị nhầm, các em xem thêm bộ bài tập riêng: 50 bài tập Since – For.

Những lỗi sai thường gặp

  1. Dùng với thời điểm đã qua: “I have seen him yesterday” là sai. Có yesterday, last night, in 2010, ago thì dùng quá khứ đơn.
  2. Quên dạng V3 bất quy tắc: went → gone/been, ate → eaten, wrote → written, rode → ridden. Xem thêm bài tập động từ bất quy tắc.
  3. Chia sai have/has: chủ ngữ số ít (he, she, it, my brother) dùng has; số nhiều (my parents, we, they) dùng have.
  4. Nhầm since/for: since + mốc, for + khoảng. Có “ago” thì không đi cùng for/since.
  5. Nhầm been/gone: “has been to” là đã đi và đã về; “has gone to” là đã đi và chưa về.

Mẹo nhớ: hỏi mình một câu, “Mốc thời gian này đã đóng lại hẳn chưa?”. Đã đóng (yesterday, last year) thì quá khứ đơn. Còn mở (so far, this week, since 2020) thì hiện tại hoàn thành. Phần phân biệt với quá khứ đơn nằm ở bài tập thì quá khứ đơn.

Phần 1: Trắc nghiệm cơ bản (câu 1–15)

Chọn đáp án đúng A, B, C hoặc D.

  1. My sister ____ her homework yet. A. doesn’t finish B. hasn’t finished C. didn’t finished D. isn’t finishing
  2. We ____ in this town since 2015. A. lived B. live C. have lived D. are living
  3. ____ you ever ____ a camel? A. Have – ride B. Did – ride C. Have – ridden D. Do – ride
  4. He has worked here ____ ten years. A. since B. for C. ago D. during
  5. They have known each other ____ they were children. A. for B. since C. when D. ago
  6. The film ____ yet, so we can’t go in. A. hasn’t started B. didn’t start C. doesn’t start D. hasn’t starting
  7. Ann ____ to Paris three times. A. has been B. was C. is D. had been
  8. I ____ my keys. I can’t open the door. A. lose B. was losing C. have lost D. had lost
  9. She has just ____ the email. A. send B. sent C. sending D. sends
  10. How long ____ English? A. are you learning B. did you learn C. have you learnt D. you have learnt
  11. This is the first time I ____ sushi. A. eat B. ate C. have eaten D. had eaten
  12. It’s the best film I ____. A. see B. saw C. have ever seen D. am seeing
  13. Mr Lan ____ his car for two weeks. A. didn’t drive B. hasn’t driven C. doesn’t drive D. isn’t driving
  14. “Has Tom left?” – “Yes, he ____.” A. has B. did C. have D. had
  15. The price of petrol ____ a lot recently. A. rises B. rose C. has risen D. will rise

Phần 2: Phân biệt với quá khứ đơn (câu 16–25)

  1. I ____ him last week. A. have seen B. saw C. had seen D. have been seeing
  2. When ____ the accident ____? A. has – happened B. did – happen C. have – happened D. does – happen
  3. We ____ dinner at seven o’clock yesterday. A. have had B. had C. have D. has had
  4. Lan ____ in Da Nang since she ____ a child. A. has lived – was B. lived – was C. has lived – has been D. lived – has been
  5. So far this week, he ____ late twice. A. is B. was C. has been D. had been
  6. He started learning the piano ten years ago, and he ____ it regularly since then. A. played B. has played C. plays D. is played
  7. Mike ____ his leg last month, so he ____ football now. A. broke – can’t play B. has broken – can’t play C. broke – couldn’t play D. has broken – couldn’t play
  8. Which sentence is correct? A. She has bought the dress yesterday. B. She bought the dress yesterday. C. She has buy the dress. D. She buys the dress yesterday.
  9. I ____ my aunt since she ____ to Canada in 2019. A. haven’t seen – moved B. didn’t see – has moved C. haven’t seen – has moved D. don’t see – moved
  10. I ____ to the dentist twice this month. A. went B. have been C. was D. am going

Phần 3: Chia động từ (câu 26–35)

Chia động từ trong ngoặc ở thì hiện tại hoàn thành.

  1. Look! The boys (break) ____ the window.
  2. She (not/see) ____ her cousins since last Tet.
  3. How many pages ____ you (write) so far?
  4. My brother (already/finish) ____ his thesis.
  5. They (live) ____ here for twenty years.
  6. ____ Nam ever (try) ____ durian?
  7. I (not/hear) ____ from Lisa lately.
  8. The children (just/go) ____ out.
  9. We (be) ____ friends since primary school.
  10. It (be) ____ two years since I (visit) ____ my old school. (Chia cả hai động từ.)

Phần 4: Tìm lỗi sai (câu 36–45)

Chọn phần gạch chân cần sửa (A, B, C hoặc D).

  1. She has lived (A) in Hue (B) since (C) five years (D).
  2. I have seen (A) that film (B) last night (C) with (D) my friends.
  3. Have (A) you (B) ever (C) went (D) to Singapore?
  4. My parents (A) has (B) been married (C) for twenty years (D).
  5. Lan (A) has (B) just (C) gave (D) me a lovely present.
  6. How many countries (A) did you visit (B) so far (C) in your life (D)?
  7. How long (A) have (B) you (C) know (D) Mr Hung?
  8. Since 2020 (A), the number of tourists (B) increases (C) steadily (D).
  9. So far (A), my class (B) won (C) three (D) football matches.
  10. This is the first time (A) he (B) has (C) rode (D) a horse.

Phần 5: Viết lại câu (câu 46–50)

Viết lại câu sao cho nghĩa không đổi, dùng hiện tại hoàn thành.

  1. She last played tennis three years ago. → She ____ tennis ____ three years.
  2. The last time I saw him was in May. → I ____ him ____ May.
  3. Nobody has ever cooked a better soup than this one. → This is the ____ soup anyone ____ cooked. (dùng best và ever)
  4. He began working here in 2019. → He ____ here ____ 2019.
  5. It is the first time Nam has eaten snails. → Nam ____ snails before.

Đáp án và giải thích

Phần 1 (câu 1–15)

  1. B – “yet” trong câu phủ định; chủ ngữ số ít nên hasn’t finished.
  2. C – since 2015 là mốc kéo dài đến nay: have lived.
  3. C – “ever” đi với Have + S + V3; V3 của ride là ridden.
  4. B – “for” đi với khoảng thời gian (ten years); “ago” không dùng với hiện tại hoàn thành.
  5. B – since + mệnh đề quá khứ đơn (they were children) nghĩa là “từ khi”.
  6. A – yet + phủ định: hasn’t started. D sai vì thiếu V3.
  7. A – “three times” tính đến nay, dùng has been to.
  8. C – mất chìa khoá và hậu quả (không mở được cửa) còn ở hiện tại.
  9. B – has just + V3; sent là V3 của send.
  10. C – How long hỏi khoảng thời gian kéo dài đến nay: have you learnt. D sai trật tự từ.
  11. C – cấu trúc “This is the first time + S + have/has + V3”.
  12. C – so sánh nhất + ever đi với hiện tại hoàn thành.
  13. B – for two weeks, câu phủ định: hasn’t driven.
  14. A – câu trả lời ngắn lặp lại trợ động từ của câu hỏi: Yes, he has.
  15. C – “recently” là dấu hiệu của hiện tại hoàn thành: has risen.

Phần 2 (câu 16–25)

  1. B – “last week” là mốc đã kết thúc: saw.
  2. B – hỏi về thời điểm xảy ra cụ thể thì dùng quá khứ đơn: did … happen.
  3. B – “yesterday” nên dùng had. D sai ngữ pháp.
  4. A – việc sống ở Đà Nẵng kéo dài đến nay (has lived); “she was a child” là mốc quá khứ đơn sau since.
  5. C – “this week” chưa kết thúc: has been.
  6. B – since then cho thấy việc chơi đàn kéo dài đến hiện tại. D sai vì “is played” là bị động.
  7. A – “last month” cần broke; “now” cần can’t play.
  8. B – yesterday đi với quá khứ đơn. A sai vì dùng hiện tại hoàn thành với yesterday.
  9. A – vế trước của since dùng hiện tại hoàn thành (haven’t seen), vế sau dùng quá khứ đơn (moved).
  10. B – “this month” chưa hết: have been.

Phần 3 (câu 26–35)

  1. have broken (kết quả còn thấy ngay: cửa kính vỡ)
  2. hasn’t seen
  3. have … written (so far)
  4. has already finished
  5. have lived
  6. Has … ever tried
  7. haven’t heard (lately)
  8. have just gone (đi rồi, chưa về)
  9. have been
  10. has been; visited (since + quá khứ đơn)

Phần 4 (câu 36–45)

  1. C – since → for (five years là khoảng thời gian).
  2. A – have seen → saw (có last night).
  3. D – went → been.
  4. B – has → have (my parents số nhiều).
  5. D – gave → given.
  6. B – did you visit → have you visited (so far).
  7. D – know → known.
  8. C – increases → has increased (since 2020).
  9. C – won → has won (so far).
  10. D – rode → ridden.

Phần 5 (câu 46–50)

  1. has not (hasn’t) played … for
  2. haven’t seen … since
  3. best … has ever
  4. has worked … since
  5. has never eaten

Tự đánh giá kết quả

  • Từ 45 câu trở lên: em đã nắm chắc thì này, có thể chuyển sang so sánh với hiện tại hoàn thành tiếp diễn.
  • Từ 35 đến 44 câu: xem lại các câu sai ở phần 2 và phần 4, thường là lỗi chọn thì theo dấu hiệu thời gian.
  • Dưới 35 câu: đọc lại phần tóm tắt, học bảng V3 của 30 động từ bất quy tắc quen thuộc rồi làm lại bộ đề sau một ngày.

Muốn tổng hợp nhiều thì cùng lúc, em có thể luyện tiếp với bài tập các thì trong tiếng Anh và cấu trúc This is the first time.

Câu hỏi thường gặp

Thì hiện tại hoàn thành dùng khi nào?

Dùng cho hành động bắt đầu trong quá khứ và kéo dài đến hiện tại, trải nghiệm tính đến nay, hành động vừa xảy ra có kết quả ở hiện tại, hoặc việc xảy ra mà không nêu rõ thời điểm.

Phân biệt since và for như thế nào?

Since đi với mốc thời gian (since 2019, since Monday, since I was ten). For đi với khoảng thời gian (for three years, for a long time). Hai từ này không đi cùng ago.

Khi nào dùng quá khứ đơn thay vì hiện tại hoàn thành?

Khi câu có mốc thời gian đã kết thúc như yesterday, last week, in 2010, two days ago hoặc khi hỏi 'when' về thời điểm xảy ra cụ thể thì dùng quá khứ đơn.

Has been to và has gone to khác nhau ra sao?

Has been to nghĩa là đã đến đó và đã quay về. Has gone to nghĩa là đã đi đến đó và hiện vẫn đang ở đó hoặc chưa về.