|
學(xué)技術(shù),重在日拱一卒,一點(diǎn)一滴的積累。
今天,我們一起來(lái)分析C語(yǔ)言的算法:放禮炮。
算法:在節(jié)日開(kāi)幕式上,有A、B、C三艘船要同時(shí)開(kāi)始鳴放禮炮各21響。已知A船每隔5秒放1次,B船每隔6秒放1次,C船每隔7秒放1次。假設(shè)各炮手對(duì)時(shí)間的掌握非常準(zhǔn)確,請(qǐng)用C語(yǔ)言計(jì)算觀眾總共可以聽(tīng)到多少次禮炮聲。
編程思路:
1、先定義一個(gè)變量來(lái)記錄當(dāng)前的時(shí)間值,通過(guò)對(duì)時(shí)間的分析,來(lái)判斷是否有禮炮聲。分析題目,我們可以知道船C最后完成放禮炮,即可以以船C停止的時(shí)間作為時(shí)間判斷的終點(diǎn)。判斷在C停止之前,有多少聲禮炮。
2、由于三個(gè)船的禮炮具有一定的時(shí)間周期,就會(huì)存在一個(gè)時(shí)間點(diǎn),放好幾個(gè)禮炮的可能性,但是對(duì)于我們而言那就是一聲禮炮的聲音。
3、即對(duì)于禮炮聲,同一個(gè)時(shí)間點(diǎn),只會(huì)有一聲禮炮,也就是多選一的情況,要么就都不響,要么就是當(dāng)前時(shí)間點(diǎn)只響一下,可以用if-else if選擇語(yǔ)句實(shí)現(xiàn)。
程序范例
#include <stdio.h>
int n, t;
int main()
{
n = 0;
for (t=0; t<=20*7; t++)
{
if ((t%5 == 0) && (t <= 20*5))
{
n++;
}
else if ((t%6 == 0) && (t <= 20*6))
{
n++;
}
else if (t%7 == 0)
{
n++;
}
}
printf("禮炮聲n = %d\n", n);
}
程序運(yùn)行結(jié)果:
1.jpg (18.16 KB, 下載次數(shù): 70)
下載附件
2022-9-23 14:32 上傳
|
|