题目:在海军节开幕式上,有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次。