找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1636|回复: 1
收起左侧

C语言的算法:放礼炮程序

[复制链接]
ID:1040469 发表于 2022-9-23 14:32 | 显示全部楼层 |阅读模式
学技术,重在日拱一卒,一点一滴的积累。

今天,我们一起来分析C语言的算法:放礼炮。

算法:在节日开幕式上,有A、B、C三艘船要同时开始鸣放礼炮各21响。已知A船每隔5秒放1次,B船每隔6秒放1次,C船每隔7秒放1次。假设各炮手对时间的掌握非常准确,请用C语言计算观众总共可以听到多少次礼炮声。


编程思路:

1、先定义一个变量来记录当前的时间值,通过对时间的分析,来判断是否有礼炮声。分析题目,我们可以知道船C最后完成放礼炮,即可以以船C停止的时间作为时间判断的终点。判断在C停止之前,有多少声礼炮。

2、由于三个船的礼炮具有一定的时间周期,就会存在一个时间点,放好几个礼炮的可能性,但是对于我们而言那就是一声礼炮的声音。

3、即对于礼炮声,同一个时间点,只会有一声礼炮,也就是多选一的情况,要么就都不响,要么就是当前时间点只响一下,可以用if-else if选择语句实现。

程序范例

#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);

}

程序运行结果:
1.jpg
回复

使用道具 举报

ID:821429 发表于 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;
这样对吗,有点像NOI的题目
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表