乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
输入格式:
输入在一行中给出比赛时间T(分钟)。
输出格式:
在一行中输出比赛的结果:乌龟赢输出@_@
,兔子赢输出^_^
,平局则输出-_-
;后跟1空格,再输出胜利者跑完的距离。
输入样哩:
242
输出样例:
@_@ 726
结题思路:
根据输入的时间,进行for循环,因为乌龟会一直前进,因而不需要if else语句,而兔子则有两种情况,通过if语句来进行分类处理,设置flag变量作为标志,如果flag为0,则兔子进行正常的前进,在这个if语句又内嵌了另一个if else语句,通过变量j来“十分钟”触发一次if语句,如果兔子比较快,则flag为1,设置sleep为0,j重新置0,如果乌龟比较快,则只让j置零,然后再进行下一步的for循环。
最后则通过if语句,根据乌龟和兔子所走的路程,输出不同结果
代码:
#include<iostream>
using namespace std;
int main(){
//a是乌龟,b是兔子
int n, a = 0, b = 0, sleep = 0, flag = 0, i, j = 0;
cin>>n;
for(i = 1;i <= n;i++){
a = a + 3;
if(flag == 0){
b = b + 9;
j++;
if(j == 10){
if(a >= b){
j = 0;
}else{
flag = 1;
sleep = 0;
j = 0;
}
}
}else{
sleep++;
if(sleep == 30){
flag = 0;
}
}
}
if(a > b){
cout<<"@_@ "<<a;
}else if(a < b){
cout<<"^_^ "<<b;
}else{
cout<<"-_- "<<a;
}
}