首先要了解make的用法:
make sb./sth.do(这个其实是省略to的不定时,但是在主动形式下一般就认为是直接加上动词原形了)
例句:Mom makes Ben do the housework.
make sb./sth.+ n.(这个后面的名词做的是宾补)
例句:The overall protection makes it a safe place.
make sb./sth.+ adj.(这个应该经常能够接触到)
例句:The fire makes the little girl warm.
这句句子中,把宾语提前,那么就是一个被动的形式,那么就要改为:
sb./sth.be made to do(因为是被动,这里的to要还原,不要问这是为什么...本来就是这样用的...)
sb./sth.be made + n.
sb./sth.be made + adj.
知道了结构以后再看原句,这里的John和truck的关系要注意!
通过中文释义,可以很快得出,是John去洗truck的事实,那么John作为一个动作的施动者,显然be动词应该是以主动形式出现的,to wash和to be washing就分别表示John洗truck和John被truck洗这样两个完全相反的意思
至于作者提出的for a week的问题,个人认为这个for a week是作为状语出现,完全是可以忽略的,如果把原句中的for a week删除,会发现并没有造成句子的不完整性,也没有造成歧义,因此可以不计
而且用的谓语动词时was made to,是was并不是has 或者had,那么就仅仅表示一种对过去事实的陈述,而非have的对现在有影响.
另外,如果是认为【因为有了一段时间所以要有进行时】,那么可能是和另一个语法现象【现在完成进行时】搞混了:
例句:Lily has been waiting here for three hours.这里也有一段时间,用的也是进行时,不过这个用法主要表达的是【Lily从开始等待这个时间点到这句句子出现这个时间点之间有三个小时的跨度,更重要的是,接下来Lily没有放弃,依然在等待】
按照这样,如果楼主想要填写to be washing的话,就与前面的was时态不一致了
因此,这个空应该填写to wash