一、题目要求:
庆祝活动,现在A、B、C三条军舰要同时开始鸣放礼炮各21响。已知A舰每隔5秒鸣放一次,B舰每隔6秒鸣放一次,C舰每隔7秒鸣放一次。
假设炮手对时间掌握的都很准,那么总共听到多少声炮响?
二、问题分析
对于这个问题,可以使用数组来解决。首先使用三个数组分别存放A,B,C舰21响礼炮的鸣放时间点,这里可以使用一个for循环来将各个时间点放入数组;接下来再用一个新的数
组,记录A,B,C的鸣放时间点在各自数组中的位置,将该位置赋值给一个变量,在第四个数组中将以该变量为下标的元素设为1,因为有三个需记录的数组,所以这块需要用到三
个for循环;最后,统计第四个数组中1的个数,即为总共听到的礼炮声数。描述详见代码:
三、代码实现
#include<stdio.h>
int main()
{
int arr[21] = {0};
int brr[21] = {0};
int crr[21] = {0};
int drr[150] = {0};
int sum = 0;
int i = 0;
int j = 0;
for(i = 0;i < 21;i++)
{
arr[i] = i * 5;
brr[i] = i * 6;
crr[i] = i * 7;
}
for(i = 0;i < 21;i++)
{
j = arr[i];
drr[j] = 1;
}
for(i = 0;i < 21;i++)
{
j = brr[i];
drr[j] = 1;
}
for(i = 0;i < 21;i++)
{
j = crr[i];
drr[j] = 1;
}
for(i = 0;i < 150;i++)
{
sum = drr[i] + sum;
}
printf("你可以听见 %d 声炮响 \n",sum);
return 0;
}
四、自我总结
该题使用数组来解决,清晰明了。我是一个正在学习编程的新手,不对的地方多多指教。