PTA|C語言:龜兔賽跑

7-4 龜兔賽跑 (20 分)

烏龜與兔子進行賽跑,跑場是一個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3米,兔子每分鐘前進9米;兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘;而烏龜非常努力,一直跑,不休息。假定烏龜與兔子在同一起點同一時刻開始起跑,請問T分鐘後烏龜和兔子誰跑得快?

輸入格式:

輸入在一行中給出比賽時間T(分鐘)。

輸出格式:

在一行中輸出比賽的結果:烏龜贏輸出@_@,兔子贏輸出^_^,平局則輸出-_-;後跟1空格,再輸出勝利者跑完的距離。

輸入樣例:

242

輸出樣例:

@_@ 726

 一開始看這道題目就覺得有點麻煩,然後也不想做。。然後晚上睡覺思考這道題只想到用for循環,然後不知道該怎麼繼續了。。今天看到了同學寫的代碼,才繞了過來。。但oj判後還是顯示一點答案錯誤。。不知道爲什麼。。

代碼如下:

#include<stdio.h>
int main(){
  int T,i;
  int run=10;//兔子跑10min
  int t=0;//兔子休息時間
  int s1=0,s2=0;//烏龜s1 兔子s2
  scanf("%d",&T);
  for(i=0;i<T;i++){
    s1+=3;

    if(run==0){ //兔子跑十分鐘後才停下來
      run=10;
      if(s1<s2){ //如果兔子跑得遠就休息三十分鐘
        t=30;
      }
    }
    if(t>0){ //休息時間減少
      t--;
    }
    if(t==0){  //沒有休息時間 兔子跑十分鐘 然後一直在for循環裏循環
      s2+=9;
      run--;
    }
   
  }
  if(s2>s1){
    printf("^_^ %d",s2);
  }else if(s2==s1){
    printf("-_- %d",s1);
  }else{
    printf("@_@ %d",s1);
  }
  return 0;
}

突然知道自己哪裏錯誤了,剛剛在打代碼註釋的時候發現自己把兔子休息的時間初始化成了30分鐘。。。改掉就全部正確了。。。太粗心了。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章