关于一道面试题

  今天早上看博客发现有两个朋友分别对一道面试做了讨论,我很感兴趣,所以也凑个热闹。
  今天碰到一道比较有趣的面试题,大家来探讨一下。
  有感于--"今天碰到一道比较有趣的面试题,大家来探讨一下。"

原题:
  甲乙两地相距100公里,有一辆火车以每小时15公里的速度离开甲地直奔乙地,另一辆火车以每小时20公里的速度从乙地开往甲地。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从甲地出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟往返了多少次

  因为我看到有很多前辈的评论说原题不是很严谨,咱们平时工作中也有很多不严谨的地方,难到工作就不做了吗?所以我们要对问题进行适当的假设,上面的这个题目也不例外,我们先假设一下。

假设:
  甲乙两点相距100公里,甲点以每小时15公里的速度直奔乙点,乙点以每小时20公里的速度直奔甲点。丙点以每小时30公里的速度和甲乙两点同时启动,从甲点出发,碰到另一点后返回,依次在两点之间来回移动。直到两点相遇,请问,丙点往返了多少次?

解:
A1 = 100 / (30 + 20)                    //丙点第一次与乙点相遇的时间
A2 = 100 - A1 * 20 - A1 * 15        //丙点与乙点相遇时甲乙两点之间的距离

B1 = A2 / (30 + 10)                     //丙点离开乙点后与甲点相遇的时间
B2 = A2 - B1 * 20 - B1 * 15         //丙点与甲点相遇时甲乙两点之间的距离

。。。

根据以上的分析得出如下程序:

using System;

namespace ConsoleApplication5{
    
class Program{
        
static void Main(string[] args){
            
            
double Distance = 100;  //两点之间的距离
            double A_speed = 15;    //甲点的移动速度
            double B_speed = 20;    //乙点的移动速度
            double Bird_speed = 30//丙点的移动速度

            
int num = 0;
            
while (Distance > 0) {
                
//
                Distance = Distance 
                           
- Distance / (B_speed + Bird_speed) * A_speed 
                           
- Distance / (B_speed + Bird_speed) * B_speed;
                
//
                Distance = Distance 
                           
- Distance / (A_speed + Bird_speed) * A_speed 
                           
- Distance / (A_speed + Bird_speed) * B_speed;
                
//记数
                num++;
            }

            Console.WriteLine(num.ToString());
        }
    }
}
最后输出结果为:277,这跟电脑的精度有关。
posted @ 2009-04-29 10:24  文明的天空  阅读(410)  评论(2编辑  收藏  举报