问题:屠夫在回家的路上发现一只窝在狼窝的狼,这时他以速度vp往家跑,t时间后狼发现屠夫,并以速度vw追赶屠夫,当狼追上屠夫的时候,屠夫就扔一块骨头,狼把骨头叼回狼窝并用t0时间藏好骨头,然后接着追屠夫。狼窝与屠夫家的距离为distance,问屠夫用几块骨头能回家?
程序:
#include<stdio.h>
void main()
{
float vp,vw;//vp-屠夫的速度,vw-狼的速度
float t,t0,t1,t2;//t-狼发现人的反应时间,t0-狼藏骨头的时间
float distance,s,s0;//distance-狼窝到家的总路程,s-狼追上屠夫时离狼窝的距离
int n;//n-骨头的数量
printf("请输入屠夫的速度:");
scanf("%f",&vp);
printf("请输入狼的速度:");
scanf("%f",&vw);
printf("请输入狼发现人的反应时间:");
scanf("%f",&t);
printf("请输入狼藏骨头的时间:");
scanf("%f",&t0);
printf("请输入到家的总路程:");
scanf("%f",&distance);
s0=vp*t;//屠夫与狼之间的距离
t1=s0/(vw-vp);//狼追上屠夫的时间
s=s0+vp*t1;//狼追上屠夫时离狼窝的距离
for(n=1;s<distance;n++)
{
t1=s/vw+t0;//狼回窝和藏骨头的时间
s0=s+vp*t1;//屠夫与狼之间的距离
t2=s0/(vw-vp);//狼追上屠夫的时间
s=s0+vp*t2;//狼追上屠夫时离狼窝的距离
}
printf("骨头的块数:%d",n-1);
printf("\n");
}