一、现在完成进行时的定义
现在完成进行时表示某动作从过去某个时间开始,一直延续到现在,并且还有可能持续下去。如:
Those cats have been screaming for hours. 那些猫叫了半天了。
We have been waiting for him for two hours. 我们等他等了两个小时。
The dollar has been climbing steadily all week. 整个星期美元一直在稳步增值。

二、现在完成进行时的结构
 现在完成进行时由“have / has been + 现在分词”构成。如:
Sales have been dropping off badly. 销售量一直减少得很厉害。
I have been waiting for an hour and a half. 我一直等了一个半小时了。
We’ll have been living here for two years by next Sunday. 到下星期日,我们在这里就住了整两年了。

三、现在完成进行时有哪些主要用法
1. 表示“持续”:
即表示一个从过去某时开始一直持续的动作,这动作可能刚刚停止,也可能还在进行。如:
She has been pruning the roses. 她一直在修剪玫瑰。
He’s been helping himself to my stationery. 他未经许可一直用我的文具。
The children have been having a lot of fun. 孩子们一直玩得很开心。
She is very tired. She’s been working all morning. 她很累。她干了一早晨了。
Tom has been seeing about a work permit for you. 汤姆一直在想办法给你弄一个工作许可证。
The tobacco industry has been trying to improve its image. 烟草行业一直在试图改善其形象。
It has come to our knowledge that you have been cheating the company. 据我们了解你一直欺骗公司。
The group has been living in a remote corner of the Cambodian jungle. 该部落一直居住在柬埔寨的丛林深处。
2. 表示“重复”
即表示在一段持续的时间内动作的多次重复,而这个重复的动作在说话时并不一定在进行。如:
We’ve all along been making mistakes like this. 我们一直犯这样的错误。
Jim has been phoning Jenny every night for the past week. 一星期以来吉姆每天晚上给詹妮打电话。

四、与现在完成进行连用的主要时间状语
现在完成进行时所用的时间状语:all day / month; this month / week / year; these days; recently / lately; in the past few + 时间段; since +时间点; for + 时间段,等等。如:
He has been working all day. 他整天都在工作。
They have been building the bridge for two month. 两个月来他们一直在修桥。
They have been planting trees this month. 这个月来他们一直在植树。
 Car sales have been shrinking recently. 汽车销量近来一直在下降。
Vera has been trying to learn Chinese for years. 维拉努力学汉语已有好几年了。
He has been sleeping for ten hours. 他已经睡了十个小时了。
Jim has been phoning Jenny every night for the last week. 上星期,吉姆天天晚上都给詹妮打电话。
The two parties have been trying to unite since the New Year. 自从新年以来,双方就一直在试图联手。

五、现在完成进行时与现在完成时的区别
1.现在完成时强调动作的完成,而现在完成进行时强调动作的延续,因此,表示动作的完成,只能用现在完成时,而不能用现在完成进行时。如:
He has changed his idea. 他改变了想法。(from )
2.在表示动作的延续时,虽然既可用现在完成时,也可用现在完成进行时,但现在完成进行时强调动作的进行。因此在需要明确表示动作还要持续下去时,应用现在完成进行时。如:
We have been studying here for two years. 我们在这儿已经学习了两年了。
3. 在许多情况下,现在完成时表示动作已经完成,而现在完成进行时却并非如此。如:
He has cleaned the window. 他把窗户擦干净了。(动作已完成)
He has been cleaning the window. 他一直在擦窗户。(动作不一定完成)
4. 有些静态动词只能用于现在完成时,一般不能用于现在完成进行时。如:
I’ve known him for many years. 我认识他有许多年了。
The war has lasted for a long time. 这场战争持续了很长时间。
5. 有少数动词(如live, work, teach, study等)用两种时态都可以,意思差别不大。如:
I’ve lived [been living] here for 30 years. 我在这儿住了30年了。
How long have you worked [been working] here? 你在这里工作多久了?
6.现在完成时与现在完成进行时的相通性:在表达一个从过去开始而现在仍在继续或刚刚结束的动作时,某些动词既可以用现在完成时,也可以用现在完成进行时,如expect, hope, learn, lie, live, look, rain, sleep, sit, snow, stand, stay, study, teach, wait, want, work等。如:
你学习英语多久了?
正:How long have yon learnt English?
正:How long have you been learning English?
他已经睡了十个小时了。
正:He has slept for ten hours.
正:He has been sleeping for ten hours.

六、现在完成进行时例题及讲解
1. Tom ______ in the library every night over the last three months.
A. works B. worked C. has been working D. had been working
分析:C。over the last three months 的意思是“在过去的三个月期间”,这类时间状语通常通常与现在完成时或现在完成进行时连用,四个选项中只有C符合此要求。又如:
Food and drink culture in Britain is surely changing, has surely changed over the last two decades. 在英国,饮食文化肯定正在不断地发生着改变,并且在过去二十年中肯定已发生过不少变化。

2. Now that she is out of a job, Lucy ______ going back to school, but she hasn’t decided yet.
A. had considered B. has been considering C. considered D. is going to consider
分析:B。根据but she hasn’t decided yet (尚未决定) 可知,从开始失业时起一直在考虑再去上学,现在还在考虑。表示从过去某一时刻开始一直到现在,并且现在依然在发生的动作,用现在完成进行时,现在完成进行时由“have/has been doing”构成,所以选B。

3. I won’t tell the student the answer to the math problem until he ______ on it for more than an hour.
A. has been working B. will have worked C. will have been working D. had worked
分的:A。has been working 为现在完成进行时,是许多中学生不太熟悉的一种时态,因此要想通过分析句子直接从正面选出答案可能有一定困难。但是,如果我们用排除法来分析,则问题变得很简单:首先,由于until引导的是时间状语从句,根据“主将从现”原则,当主句为将来时态时,时间状语从句不能直接用将来时态来表示将来意义,据此可排除B和C; 而选项D为过去完成时,也不能选,因为“过去完成时”必须以“过去”为支点,表示“过去的过去”,但此句并没有过去时态这一支点,故此选项也被排除。

4. Cathy is taking notes of the grammatical rules in class at Sunshine School, where she ______ English for a year.
A. studies B. studied C. is studying D. has been studying
分析:D。根据句中的现在进行时可排除B,再根据句中的for a year可知此题选现在完成进行时最佳,即选D。

5. —I have got a headache.
—No wonder. You ______ in front of that computer too long.
A. work B. are working C. have been working D. worked
分析:C。由于在电脑前工作太久,所以导致了现在头痛的结果,故空格处应填现在完成时或现在完成进行时,即答案选C。

6. —I’m sure Andrew will win the first prize in the final.
—I think so. He ______ for it for months.
A. is preparing B. was preparing C. had been preparing D. has been preparing
分析:D。根据句中的…will win the first prize in the final可知,决赛还没有举行,所以下文谈到的“准备”指的肯定是从过去一直持续到现在的情况,故用现在完成进行时。

7. Excuse me, Marcia, a reporter from Vanity Fair ______ all day. Could you speak to her now?
A. phones B. has phoned C. has been phoning D. phoned
分析:C。根据句中的时间状语all day和谓语动词phone的特点(为非延续性动词)可知,句子应用进行时态(表示动作不断重复),而选项中只有C为现在完成进行时。句意为:玛西娅,打搅你一下,有名来自《名利场》的记者一整天都在打电话来,你现在能和他说说吗?又如:She is very tired. She’s been typing letters all day. 她很累了。她整天都在打信件。

8. Over the past decades, sea ice ______ in the Arctic as a result of global warming.
A. had decreased B. decreased C. has been decreasing D. is decreasing
分析:C。介词短语“over the past [last]+时间段”的意思是“在过去的……时间中”,它指的是从过去某时持续到现在的一段时间,所以通常与现在完成时或现在完成进行时连用,故答案选C。句意为:过去几十年来,由于全球变暖,北极的海冰正慢慢消融。又如:Technology in this field has matured considerably over the last decade. 这一领域的技术经过过去10年的发展已经相当完善。

9. —Why, Jack, you look so tired!
—Well, I ______ the house and I must finish the work tomorrow.
A. was painting B. will be painting C. have painted D. have been painting
分析:D。现在完成进行时表示从过去一直持续到现在的动作。在此题中,由于“一直在刷油漆”,所以才导致“看上去非常疲惫”,故选D最符合句意。

10. Mother wanted to be a good provider, a role she ______ since her marriage to Father.
A. shoulders B. shouldered C. is shouldering D. has been shouldering
分析:D。根据空格后的since可知,此处谈论的是从过去一直持续到现在的情况,故用现在完成进行时最合适。

11. Joseph ______ to evening classes since last month, but he still can’t say “What’s your name?” in Russian.
A. has been going B. went C. goes D. has gone
分析:A。根据句中的since可知,空格处应填完成时态,故可排除B和C;根据句意,空格处填现在完成进行时比填现在完成时更合适,因为它更强调“一直在做某事”。又如:He has been working since noon. 他从中午就开始工作了。He was taken ill and no wonder, considering he has been overworking for years. 他生病了,也难怪,多少年他一直过度辛劳。

12. I have to see the doctor because I ______ a lot lately.
A. have been coughing B. had coughed C. coughed D. cough
分析:A。根据句中“不得不要去看医生”这一信息可知,“咳嗽”这一现象现在还在持续,由此可排除B和C;比较A和D,显然用现在完成进行时才能更好地表示从过去一直持续到现在的情况,故选A。

13. —Hi, Tracy, you look tired.
—I am tired. I ______ the living room all day.
A. painted B. had painted C. have been painting D. have painted
分析:C。表示从过去某个时间开始一直延续到现在的动作,要用现在完成进行时。all day 是关键词。
14. We ______ on this project for four hours. Let’s have a rest.
A. are working B. have been working C. worked D. had worked
分析:B。根据句中的let’s have a rest(我们休息一下吧)可知,连续工作四个小时导致我们现在很累了,所以用现在完成进行时比较合适。