解题思路:
分析条件。
一旦其中一个到达终点,即所走路程大于等于l时,退出循环。时间只记录比赛时间。
分两种情况:
兔子休息。只有乌龟在跑,在s秒内,循环执行,{sum2+=v2,比赛时间加一}。
兔子不休息。乌龟和兔子路程都在增加。{sum1+=v1;sum2+=v2;}
注意事项:
1,特殊讨论:
可能当兔子休息时乌龟到达终点,所以追加条件判断乌龟是否到达终点。(我一开始写的时候没有考虑到,调试了几次才想起来)
2,结果输出讨论:
要先考虑同时到达,否则可能出现同时满足两个条件语句,两次输出。
参考代码:
#include<iostream>
using namespace std;
int main(){
int v1, v2, t, s, l;
cin >> v1 >> v2 >> t >> s >> l;
int c = 0; //比赛计时器
int sum1=0, sum2=0; //1 兔子,2 乌龟
while (sum2 < l && sum1<l) {
if (sum1 - sum2 >= t) {
int m = s;
while (m) {
sum2 += v2;
c++;
m--; //兔子休息倒计时
if (sum2 >= l) break; //讨论兔子休息时乌龟是否到达终点
}
}
else {
sum1 += v1;
sum2 += v2;
c++;
}
}
if (sum2 >= l&&sum1>=l) { //必须先判断同时到达终点
cout << "D" << endl;
}
else if (sum1 >= l) {
cout << "R" << endl;
}
else {
cout<<"T"<<endl;
}
cout << c;
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:523 |
C二级辅导-进制转换 (C语言代码)浏览:799 |
C二级辅导-统计字符 (C语言代码)浏览:1062 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:822 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:998 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1368 |
简单的a+b (C语言代码)浏览:878 |
水仙花 (C语言代码)浏览:1163 |
核桃的数量 (C语言代码)浏览:726 |