龟兔赛跑

龟兔赛跑 

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

输入格式:

输入在一行中给出比赛时间T(分钟)。

输出格式:

在一行中输出比赛的结果:乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_-;后跟1空格,再输出胜利者跑完的距离。

输入样例:

242

输出样例:@_@ 726


1)实验代码

#include<stdio.h>
int main()
{
 int T,i;
 int rabbitT=0;    //兔子跑的时间
 scanf("%d",&T);
 if(T<10)    //时间小于10分钟,兔子赢
 {
  printf("^_^ %d\n",T*9);
  return 0;
 }
 rabbitT=10;
 for(i=10;i<=T;i++)  //从第10分钟开始
 {
  if(i%10==0)    //每10分钟回头,比较
  {
   if(rabbitT*9>i*3 && T-i>=30)    //兔子跑的距离大于乌龟 ,剩余时间不小于30分钟
   {
    i=i+29;    //不是i=i+30,因为for循环中还有个i++
   }
   if(rabbitT*9>i*3 && T-i<30)    // 兔子跑的距离大于乌龟 ,剩余时间小于30分钟
   {
    i=T;
    break;
   }
   if(rabbitT*9<=i*3 && T-i>=10)  //兔子跑的距离小于乌龟,剩余时间不小于10分钟,兔子真正跑的时间+10
   {
    rabbitT=rabbitT+10;
    i=i+9;
   }
   if(rabbitT*9<=i*3 && T-i<10)  //兔子跑的距离小于乌龟,剩余时间小于10分钟,兔子真正跑的时间+T-i
   {
    rabbitT=rabbitT+(T-i);
    i=T;
    break;
   }
  }
 }
 if(rabbitT*9>i*3)
  printf("^_^ %d\n",rabbitT*9);
 if(rabbitT*9<i*3)
     printf("@_@ %d\n",i*3);
 if(rabbitT*9==i*3)
     printf("-_- %d\n",i*3);
     return 0;
}


2)设计思路


1.定义变量


2.时间小于10分钟,兔子赢


3.for循环,兔子跑的时间从第10分钟开始


4.每10分钟回头,比较


5.兔子跑的距离大于乌龟 ,剩余时间不小于30分钟,i=i+29


6.兔子跑的距离大于乌龟 ,剩余时间小于30分钟,i=T,跳出循环


7.兔子跑的距离小于乌龟 ,剩余时间不小于10分钟,兔子真正跑的时间+10,i=i+9


8.兔子跑的距离小于乌龟 ,剩余时间小于10分钟,兔子真正跑的时间+T-i,i=T,跳出循环


9.最后比较兔子和乌龟跑的距离,输出答案


3)本题调试过程碰到问题及解决办法


逻辑有点不清,漏了条件 

posted @ 2018-12-09 23:46  xirfly  阅读(189)  评论(0编辑  收藏  举报