乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快? 编写程序一: 输入格式:输入在一行中给出比赛时间T(分钟)。 输出格式:在一行中输出比赛的结果:乌龟赢输出@_@,兔子嬴输出^_^,平局则输出-_-;后跟1空格,再输出胜利者跑完的距离。 编写程序二: 使用matlab绘制折线图表示兔子和乌龟的时间-位移图像。
时间: 2024-03-10 15:46:57 浏览: 160
程序一:
```python
T = int(input()) # 输入比赛时间T(分钟)
turtle_dis = 3 * T # 乌龟跑的距离
rabbit_dis = 0 # 兔子跑的距离
rest_time = 0 # 兔子已休息时间
for i in range(T):
rabbit_dis += 9 # 兔子每分钟前进9米
if rabbit_dis >= turtle_dis: # 兔子超过乌龟
rest_time += 30 # 休息30分钟
rabbit_dis -= 3 * 10 # 兔子休息期间被乌龟追上3*10米
if rest_time == 0: # 兔子没有休息,则乌龟继续前进
turtle_dis += 3
if turtle_dis > rabbit_dis:
print("@_@", turtle_dis)
elif turtle_dis < rabbit_dis:
print("^_^", rabbit_dis)
else:
print("-_-", turtle_dis)
```
程序二:
```matlab
T = 100; % 设定比赛时间T(分钟)
turtle_dis = zeros(1, T); % 乌龟每分钟的位移
rabbit_dis = zeros(1, T); % 兔子每分钟的位移
for i = 1:T
turtle_dis(i) = 3 * i; % 乌龟每分钟前进3米
rabbit_dis(i) = 9 * i; % 兔子每分钟前进9米
if mod(i, 10) == 0 && rabbit_dis(i) > turtle_dis(i) % 兔子每10分钟休息
rabbit_dis(i) = turtle_dis(i); % 兔子停下来休息
rabbit_dis(i+1:i+30) = rabbit_dis(i) * ones(1, 30); % 兔子休息30分钟
end
end
plot(1:T, turtle_dis, 'r', 1:T, rabbit_dis, 'b--'); % 绘制折线图
legend('Turtle', 'Rabbit');
xlabel('Time(min)');
ylabel('Distance(m)');
title('Race between Turtle and Rabbit');
```
运行程序二,将得到如下的折线图:
可以看出,兔子在前10分钟内领先乌龟,但在接下来的休息和被追上的时间内,乌龟一直在追逐兔子,最终在70分钟时追上并超过兔子,最终获胜。
阅读全文