首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
GESP2026年9月认证C++一级( 第三部分编程题(1、新龟兔赛跑))精讲
📅 2026/10/3 7:28:57
✍️ 爱科研究院
👁 阅读 3,247
一、先听懂故事新龟兔赛跑 很久很久以前……兔子和乌龟进行了一场赛跑。以前兔子因为骄傲自满比赛的时候睡觉输给了乌龟。这一次兔子吸取了教训“这次我绝对不睡觉”所以 乌龟会一直按照固定速度跑到终点 兔子不会再睡觉但是它会在终点前睡一会儿谁先到达终点谁就获胜。题目给我们三个数字第1行乌龟从起点到终点需要的时间 第2行兔子的速度 第3行兔子在终点前睡觉的时间起点到终点的距离固定为1000.0题目要求我们判断乌龟赢 兔子赢 还是平局并且第二行输出兔子到达终点所需要的总时间。二、第一件事情先把题目转换成“数学语言”假设输入20.0 100.0 11.0那么乌龟时间 20.0 兔子速度 100.0 兔子睡觉时间 11.0兔子跑的距离是1000.0我们知道⭐ 时间 路程 ÷ 速度所以兔子不停下来跑完全程需要1000.0 ÷ 100.0 10.0但是兔子还要睡11.0所以兔子的总时间10.0 11.0 21.0于是 乌龟20.0 兔子21.0谁更快当然是20.0 21.0所以乌龟获胜题目的样例输出正是turtle 21.00三、这道题真正的核心只有两个步骤我们可以把整个题目压缩成一张“藏宝图”输入 ↓ ┌─────────────────┐ │ 乌龟需要的时间 t1 │ │ 兔子的速度 v │ │ 兔子睡觉时间 t2 │ └─────────────────┘ ↓ 计算兔子跑步时间 ↓ 1000.0 / v ↓ 加上兔子的睡觉时间 ↓ 兔子总时间 tt ↓ ┌────────┼────────┐ ↓ ↓ ↓ tt t1 tt t1 tt t1 ↓ ↓ ↓ rabbit turtle tie是不是一下就简单了四、第一步定义三个变量我们可以写float t1, v, t2;分别表示t1 → 乌龟需要的时间 v → 兔子的速度 t2 → 兔子睡觉的时间为什么使用float而不是int因为题目的数据可能是20.0 100.0 11.0也就是说可能有小数。所以我们使用能够保存小数的float。五、第二步输入数据代码cin t1 v t2;如果输入20.0 100.0 11.0那么t1 20.0 v 100.0 t2 11.0可以想象成三个小盒子┌────────────┐ │ t1 20.0 │ └────────────┘ ┌────────────┐ │ v 100.0 │ └────────────┘ ┌────────────┐ │ t2 11.0 │ └────────────┘六、第三步计算兔子的总时间这是全题最重要的一行float tt 1000.0 / v t2;我们拆开来看。①1000.0 / v这是兔子跑完整个1000米需要的时间。因为时间 路程 ÷ 速度所以1000.0 ÷ v② t2兔子跑完以后还需要加上睡觉时间所以兔子总时间 跑步时间 睡觉时间也就是float tt 1000.0 / v t2;七、拿样例走一遍输入20.0 100.0 11.0先计算1000.0 / 100.0 10.0再加10.0 11.0 21.0所以tt 21.0八、第四步比较谁先到达现在我们有t1 乌龟时间 tt 兔子时间所以直接比较if (tt t1)什么意思如果兔子用的时间更少兔子获胜。那么printf(rabbit\n);第二种情况如果else if (tt t1)说明兔子需要更多时间。所以 乌龟更快输出printf(turtle\n);第三种情况如果else意味着tt t1也就是两个人恰好同时到达所以printf(tie\n);九、把整个判断画成“比赛终点门”可以把它想象成终点有一个裁判 终点裁判 │ ┌────────┴────────┐ │ │ 兔子时间 tt 乌龟时间 t1 │ │ └────────┬────────┘ ↓ 比较时间 ↓ ┌───────────┼───────────┐ ↓ ↓ ↓ ttt1 ttt1 ttt1 ↓ ↓ ↓ rabbit turtle tie记住比赛比的是“时间”不是速度这是这道题非常容易出现的思维陷阱。十、为什么不能直接比较兔子的速度和乌龟比如乌龟时间20秒 兔子速度100 兔子睡觉11秒我们不能说“兔子的速度100看起来一定比乌龟快。”因为乌龟给我们的不是速度而是乌龟已经跑完全程需要20秒。而兔子需要我们自己计算1000 / 100 11 21最后比较20秒 vs 21秒所以 乌龟赢。十一、第二个样例兔子赢了 题目第二组输入20.0 100.0 9.0我们计算兔子跑步时间 1000 ÷ 100 10兔子睡觉9所以兔子总时间 10 9 19乌龟20比较19 20所以 兔子获胜输出rabbit 19.00十二、为什么输出是19.00而不是19这个地方很值得初学者注意。题目要求输出二位小数。参考程序printf(%.2f\n, tt);这里%.2f就是用小数形式输出并且保留2位小数。所以19会显示成19.00而21会显示成21.00十三、%.2f到底是什么意思把它拆成% .2 ff表示按浮点数格式输出。.2表示小数点后保留2位。所以printf(%.2f, 19.5);输出19.50而printf(%.2f, 19.567);会按照两位小数的要求输出相应结果。十四、完整参考程序#include iostream #include cstdio using namespace std; int main() { float t1, v, t2; cin t1 v t2; float tt 1000.0 / v t2; if (tt t1) printf(rabbit\n); else if (tt t1) printf(turtle\n); else printf(tie\n); printf(%.2f\n, tt); return 0; }这也是这道题的核心程序结构。十五、我们逐行解析#include iostream #include cstdio↓ 我要使用输入输出工具。using namespace std;↓后面的代码可以直接使用cin等名字。int main()↓ 比赛正式开始float t1, v, t2;↓准备三个小盒子 乌龟时间 兔子速度 兔子睡觉时间cin t1 v t2;↓把输入的数据装进三个盒子。float tt 1000.0 / v t2;↓计算兔子的总时间。if (tt t1)↓兔子时间更短吗如果是printf(rabbit\n);↓ 兔子赢else if (tt t1)↓兔子时间更长吗如果是printf(turtle\n);↓ 乌龟赢else↓两个人时间一样printf(tie\n);↓ 平局printf(%.2f\n, tt);↓把兔子的总时间保留两位小数打印出来。十六、这道题最重要的“做题模板”以后大家再遇到类似的两个人比赛谁先到达可以直接使用这个思考模板第1步分别确定两个人的时间人物A时间 ? 人物B时间 ?第2步如果某个人没有直接给时间利用时间 路程 ÷ 速度第3步把额外花费的时间加进去例如总时间 跑步时间 睡觉时间第4步比较时间A时间 B时间 → A赢 A时间 B时间 → B赢 A时间 B时间 → 平局十七、初学者容易犯的4个错误❌ 错误1把速度当成时间比较兔子的速度是100不能直接和乌龟的20比。因为100 → 速度 20 → 时间单位都不一样。❌ 错误2忘记兔子睡觉兔子真正的总时间1000 / v t2而不是1000 / v❌ 错误3把公式写反错误v / 1000正确1000.0 / v因为时间 路程 ÷ 速度❌ 错误4忘记平局不能只写if (tt t1) rabbit else turtle因为还有第三种可能tt t1所以应该if (tt t1) rabbit; else if (tt t1) turtle; else tie;十八、最后把这道题压缩成一句话乌龟时间题目直接给兔子时间用“1000÷速度睡觉时间”算出来然后谁的时间短谁获胜。最后形成一个思维方式流程读题 ↓ 找变量 ↓ 找公式 ↓ 算出兔子时间 ↓ if 比较 ↙ ↓ ↘ 兔赢 平局 龟赢这道题的算法难度不高真正考查的是孩子能不能把故事 → 数学公式 → C变量 →if-else判断 → 格式化输出这一整条链路连接起来。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/3 7:28:57
2026中国战略规划机构实力榜:十家智库的专业度与创新力解读
2026/10/3 7:28:57
中望3D钣金:褶弯凸缘
2026/10/3 7:28:57
数组与链表底层差异:内存模型、操作复杂度与工程选型全解析
2026/10/3 13:59:19
VSCode搭建OpenGL环境:从黑屏到第一个三角形的完整指南
2026/10/3 13:59:19
基于Python的手写数字识别系统:从MNIST到完整工程实现
2026/10/3 13:59:19
相空间重构原理与PSR三维重构实战:从一维时间序列到混沌吸引子分析
2026/10/3 13:59:19
Turbo码EXIT图分析:Python实现指南
2026/10/3 13:59:19
BP神经网络Python实现:从零手写回归预测代码与调参指南
2026/10/3 13:54:19
第052篇 Socket 与 HTTP——网络编程的两层视角
2026/10/3 0:03:29
GitHub 热门: NVIDIA/Model-Optimizer
2026/10/3 0:03:29
C语言流程控制全解析:从if、循环到嵌套与调试实战
2026/10/3 0:03:29
2026全球总决赛观赛攻略:赛程节点、时差换算与作息调整全解析
2026/10/1 22:21:25
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
2026/10/2 12:21:42
新手入门看这篇:建设网站加盟避坑指南与SEO实操
2026/10/1 21:38:34
论文AIGC疑似度是什么意思?想查论文AI率有哪些免费工具?
2026/10/2 12:19:13
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/3 12:41:10
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/2 6:07:10
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)