PTA 题目7-22 龟兔赛跑

本文介绍了如何根据题目设定的兔子休息规则(跑10分钟休息,超乌龟30分钟大休息,休息时间0则开始休息)编写代码,以模拟兔子在与乌龟比赛中的行为。作者表示语言表达有限,但提供了注释以帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

思路分析 :乌龟我们很好理解,它需要一直跑;重点就是兔子的分析,根据题目我们知道兔子的休息条件要满足三个条件,第一每跑10分钟就要停下来,第二看有没有超过乌龟,超过就要休息30分钟,否则继续跑10分钟,第三当休息的时间为0时,就要开始休息,必须都要满足这些条件,兔子才能休息。这样我们就能写出代码了。(想哭,语言表达不是很好,可能表达的意思不是很准确,我在代码里会加注释,希望各位朋友能看懂)

代码实现

好了,就简单介绍到这里,我的语言表达还待提升 ,如果各位能看懂的话,点点关注和赞吧,以后我会写更好的题目的,谢谢大家

### 关于PTA C语言编程中的龟兔赛跑问题 对于给定的时间`T`,程序通过模拟乌子的比过程来判断最终谁领先并输出相应的结果以及距离。代码逻辑基于乌持续以恒定速度前进,而子间歇性休息的行为模式。 在代码实现上,定义变量`t`表示总时间,`a`代表子累计行程,`b`记录乌累计行程,`i`作为循环计数器用于追踪当前分钟数,还有`rest`用来标记子剩余的休息时间。每当经过一分钟(`while(i != t)`),如果此时不是处于休息状态,则增加子的速度至当前位置;不论如何都会无条件累加乌的位置因为其不会停止[`^1`]。 特别地,在每完成一轮十分钟周期后(`if (i % 10 == 0 && rest == 0)`),会检查两者之间的相对位置关系——一旦发现子已经超过了乌就会触发一次长达三十分钟的小憩(`rest = 30`) [`^2`]。 最后依据双方所达到的具体里程判定胜负情况,并按照指定格式打印出相应表情符号加上获胜方移动过的实际长度: ```c #include <stdio.h> int main() { int t, a = 0, b = 0, i = 0, rest = 0; scanf("%d", &t); while (i++ < t) { // 注意这里修改了循环条件以便更自然地遍历每一分钟 if (!rest) { a += 9; } else if (--rest <= 0){ rest = 0; // 确保休息结束后重置为零而不是负值 } b += 3; if (!(i % 10)) { if (a > b) { rest = 30; } } } if (a > b) { printf("^_^ %d\n", a); } else if (a < b) { printf("@_@ %d\n", b); } else { printf("-_- %d\n", a); } return 0; } ``` 此版本修复了一些潜在的问题比如当`rest`减到小于等于0时不应当继续减少而是应该设置回默认值即不再休眠的状态。此外调整了部分细节使得算法更加清晰易懂。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值