找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2488|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

C語(yǔ)言的算法:放禮炮程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
學(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é)果:
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:821429 發(fā)表于 2023-7-24 23:58 | 只看該作者
n=2;
for(i=7;i<=7*20;i+=7)
{
    n+=(i%6==0);
    n+=(i%5==0);
}
out=21*3-n;
這樣對(duì)嗎,有點(diǎn)像NOI的題目
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表