新手问题
C#编码狐狸和黄鼠狼进行跳跃比赛,狐狸每次跳2又4分之3米,黄鼠狼每次跳4又8分之1米,它们每秒钟跳一次,比赛跑道全长1500米,在比赛跑道上从起点开始每隔6又16分之3米挖一个陷阱(起点处没有陷阱,并且陷阱视作一点),它们从陷阱里爬出来都需要10秒,它们同时开始出发,请问当它们当中的一个到达终点时,另一个还差多少米?
求大婶详解。(代码) C# 编码 --------------------编程问答-------------------- 没有大婶回帖啊。。。。 --------------------编程问答-------------------- 你好,我是大婶,请问你有什么要问 --------------------编程问答-------------------- 我自己做的这个,估计不是很好。
namespace IMOTest
{
public class Fox
{
//狐狸即时总路程
public float FoxDistance = 0f;
//狐狸的速度
public float FoxSpeed = 11 / 4f;
//狐狸已经掉入陷阱的次数
public int FoxTimes =0 ;
/// <summary>
/// 狐狸跳
/// </summary>
public void FoxRun()
{
FoxDistance += FoxSpeed;
}
/// <summary>
/// 狐狸停
/// </summary>
public void FoxStop()
{
FoxDistance = FoxDistance;
}
}
}
namespace IMOTest
{
public class Weasel
{
//黄鼠狼即时路程
public float WeaselDistance = 0f;
//黄鼠狼的速度
public float WeaselSpeed = 33 / 8f;
//黄鼠狼已经掉入陷阱的次数
public int WeaselTimes = 0;
/// <summary>
/// 黄鼠狼跳
/// </summary>
public void WeaselRun()
{
WeaselDistance += WeaselSpeed;
}
/// <summary>
/// 黄鼠狼停
/// </summary>
public void WeaselStop()
{
WeaselDistance = WeaselDistance;
}
}
}
namespace IMOTest
{
class Program
{
private static void Main()
{
//总比赛路程
const int distance = 1500;
//掉入陷阱所用时间
const int reRun = 10;
//陷阱的间距
const float trapSite = 99/16f;
//申明狐狸对象
var f = new Fox();
//申明黄鼠狼对象
var w = new Weasel();
//记录时间变量
int time;
//这个循环模拟了整个比赛过程
for (time = 0; f.FoxDistance <= distance && w.WeaselDistance <= distance; time++)
{
//狐狸开始跳
if (f.FoxDistance != 0)
{
//如果狐狸跳的距离恰好是陷阱间距的倍数,狐狸掉入陷阱
if (f.FoxDistance%trapSite == 0)
{
//判定时间(如果当前时间=路程/速度+已经掉入陷阱数*10,这时狐狸停)
if (time == f.FoxDistance/f.FoxSpeed + f.FoxTimes*reRun)
{
f.FoxStop();
}
//如果当前时间一直在(路程/速度+已经掉入陷阱数*10+10)之间,狐狸这是还在陷阱里面,狐狸停
else if (time < (f.FoxDistance/f.FoxSpeed + f.FoxTimes*reRun + 10))
{
f.FoxStop();
}
//如果当前时间恰好=路程/速度+已经掉入陷阱数*10+10,说明狐狸刚要爬出陷阱,狐狸开始跳,这也完成了一次陷阱
else if (time == (f.FoxDistance/f.FoxSpeed + f.FoxTimes*reRun + 10))
{
f.FoxTimes++;
Console.WriteLine("狐狸第{0}次掉进陷阱!", f.FoxTimes);
f.FoxRun();
}
else
{
f.FoxRun();
}
}
else
{
f.FoxRun();
}
}
else
{
f.FoxRun();
}
//黄鼠狼开始跳
if (w.WeaselDistance != 0)
{
//如果黄鼠狼跳的距离恰好是陷阱间距的倍数,狐狸掉入陷阱
if (w.WeaselDistance % trapSite == 0)
{
//判定时间(如果当前时间=路程/速度+已经掉入陷阱数*10,这时黄鼠狼停)
if (time == w.WeaselDistance / w.WeaselSpeed + w.WeaselTimes * reRun)
{
w.WeaselStop();
}
//如果当前时间一直在(路程/速度+已经掉入陷阱数*10+10)之间,黄鼠狼这是还在陷阱里面,黄鼠狼停
else if (time < (w.WeaselDistance / w.WeaselSpeed + w.WeaselTimes * reRun + 10))
{
w.WeaselStop();
}
//如果当前时间恰好=路程/速度+已经掉入陷阱数*10+10,说明黄鼠狼刚要爬出陷阱,黄鼠狼开始跳,这也完成了一次陷阱
else if (time == (w.WeaselDistance / w.WeaselSpeed + w.WeaselTimes * reRun + 10))
{
w.WeaselTimes++;
Console.WriteLine("黄鼠狼第{0}次掉进陷阱!", w.WeaselTimes);
w.WeaselRun();
}
else
{
w.WeaselRun();
}
}
else
{
w.WeaselRun();
}
}
else
{
w.WeaselRun();
}
}
if (f.FoxDistance > w.WeaselDistance)
{
Console.WriteLine("时间{0}",time);
Console.WriteLine("狐狸最先到达终点!");
//Console.WriteLine("黄鼠狼距离终点还有{0}米",(distance-w.WeaselDistance).ToString());
Console.WriteLine("黄鼠狼距离终点还有{0}米", ((time - w.WeaselTimes*10)*w.WeaselSpeed).ToString());
}
else
{
Console.WriteLine("黄鼠狼最先到达终点!");
Console.WriteLine("狐狸距离终点还有{0}米", (distance - f.FoxDistance).ToString());
}
Console.ReadLine();
}
}
} --------------------编程问答--------------------
我的意思说用编程的新思想,来做这道题。看看有没有清晰的思路,直接明了,就相当于现实生活中很多事情可以用编程的方式来做。
不主要看代码,主要是思想!
补充:.NET技术 , C#