6.21 关于海军开幕式,有A,B,C三艘军舰同时鸣炮的问题优化,超级简单的写法✌。

题目:在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。已知A舰每隔5秒放1次,B舰每隔6秒放1次,C舰每隔7秒放1次。假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声。

1.问题分析

考虑到一共有21发炮,我们以时间(i)秒数作为最高上限,A军舰的时间最长为21*7s。

如果有一个触发条件,观众就听到一次响声,(响声次数)count++。

触发条件:

               (1)A军舰5s一次 B军舰6s一次 C军舰7s一次

               (2)但是A军舰的时间要控制在21*5,B和C同理

误区

         有朋友可能会说,三艘军舰有重叠的鸣炮。但是我们用的是  或(||)这个条件运算符。只要其中有一个满足(比如三艘同时鸣炮,但是可以理解为只执行  (语句1 || 语句2 || 语句3)中的语句1  ,此时count++表示加一次,而不是三次

2.代码

#include<stdio.h>
int main()
{
    int i,count=0;
    for(i=0;i<21*7;i++)//遍历所有的时间
    {
            {
                if ((i%5 == 0 &&i<=21*5)||(i%6==0&&i<=21*6)||(i%7 == 0&&i<=21*7))
                    count++;
            }
    }
    printf("总共听到%d声",count);
    return 0;
}

//最后的正确答案是54次。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值