C語言 解決龜兔賽跑的問題

2021-10-25 01:57:45 字數 2224 閱讀 3069

pta基礎程式設計題目集7-22

龜兔賽跑這一問題可能有很多解答方法,例如結合數學影象之類的經典方法,除此之外,我還想到了一種方法。下面來看解析。

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

輸入格式:

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

輸出格式:

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

案例

輸入樣例:

242輸出樣例:

@_@ 726

思路分析問題:烏龜速度 3 m/mim ;兔子速度:9 m/min

兔子每10分鐘看一次路程,

如果超過烏龜,則兔子休息30min,需要注意的是,兔子休息期間,沒有路程的增加,那麼我們對此狀態進行標記(mark),並記錄休息結束時的時間(rest_time);

如果沒超過烏龜,則繼續跑10min。

烏龜則是一直再跑。

**如下:(附帶注釋)

//龜兔賽跑

#include

#define tortoise_speed 3

#define rabbit_speed 9

typedef

struct

tortoise;

//烏龜

typedef

struct

rabbit;

void

init_tortoise

(tortoise* p)

;//初始化烏龜的資料

void

init_rabbit

(rabbit* p)

;//初始化兔子的資料

void

compare

(tortoise* p,rabbit* q)

;//比較獲勝

void

distance_tortoise

(tortoise* p,

int time)

;//計算烏龜的行程

void

distance_rabbit

(rabbit* p,

int time)

;//計算兔子的行程

intmain

(void

)else

}else

else

}++t;

//時間一分一分的流逝

if(rab_1.rest_time == t)

}compare

(&tor_1,

&rab_1)

;//比較

//printf("\n烏龜:%d 兔子:%d",tor_1.t_run,rab_1.r_run); //測試

}void

init_tortoise

(tortoise* p)

void

init_rabbit

(rabbit* p)

void

compare

(tortoise* p,rabbit* q)

else

if(p->t_run==q->r_run)

else

}void

distance_tortoise

(tortoise* p,

int time)

void

distance_rabbit

(rabbit* p,

int time)

執行結果如下:

c語言新龜兔賽跑 幽默 新龜兔賽跑

作者 何必加 自從輸給了烏龜後,兔子心裡很是生氣。這一天,他又遇見了烏龜,要求和他比賽,一定要一雪前恥。烏龜答應了,並且約定連比三場。第一場還是兔子輸了,原來他一著急,跑錯了方向,等他轉回身來到終點時,烏龜早已獲勝了,兔子自然心裡不服,但他堅信,接下來兩場必勝。第二場比賽,兔子認準了方向,跑啊跑,快...

龜兔賽跑C語言基礎

烏龜與兔子進行賽跑,跑場是乙個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3公尺,兔子每分鐘前進9公尺 兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘 而烏龜非常努力,一直跑,不休息。假定烏龜與兔...

C語言練習4 龜兔賽跑

烏龜與兔子進行賽跑,跑場是乙個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3公尺,兔子每分鐘前進9公尺 兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘 而烏龜非常努力,一直跑,不休息。假定烏龜與兔...