失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 编写一个C程序 实现以下功能: 张三 李四 王五三个人同时放鞭炮 张三每隔i秒放一

编写一个C程序 实现以下功能: 张三 李四 王五三个人同时放鞭炮 张三每隔i秒放一

时间:2023-02-16 08:36:00

相关推荐

编写一个C程序 实现以下功能: 张三 李四 王五三个人同时放鞭炮 张三每隔i秒放一

编写一个C程序,实现以下功能:

张三、李四、王五三个人同时放鞭炮,张三每隔i秒放一个,李四每隔j秒放一个,王五每隔k秒放一个,他们各自放n个。对任意给定的i、j、k和n,求能听到多少声鞭炮响。

文章目录

前言一、解决放鞭炮应决解的问题二、详细代码如下结果如下:总结

前言

放鞭炮问题,应考虑三人放鞭炮时,是否由重叠,或者没有声音等问题 详细分析见下文;

提示:以下是本篇文章正文内容,下面案例可供参考

一、解决放鞭炮应决解的问题

最大的问题时某一秒是否会出现炮声同时响的问题,解决该问题,正确思路应是对放炮过程的每一秒都进行分析,判断是否有响声重复,具体思路如下:

1.找出最大的放炮的持续时间,以此确定循环时间

2.对每一秒都进行判断,如能成功,则count++;如果count大于3则sum-2;如果count大于2则sum-1;

3.总数为3n,最后的响声为3n-重复的声音

二、详细代码如下

#include <stdio.h>void main(){int i, j, k, n, a, t,count = 0, sum;printf("输入张三,李四,王五的放炮时间间隔:");scanf("%d%d%d",&i, &j, &k);printf("输入放炮的个数:");scanf("%d", &n);sum= 3 * n;if (i > j)//以下是找出最长的放炮时间间隔{a = i;if (k > i){a= k;}}else{a= j;if (k > j){a= k;}}//以上是找出最长的放炮时间间隔for (t = 0;t <= a * (n - 1);t++)//以最长的放炮时间为循环{if (t >= 0&& t <= i * (n - 1))//张三的放炮时间,超出该时间{//不再进行判断if (t % i == 0)count++;}if (t >= 0&& t <= j * (n - 1))//李四的放炮时间,超出该时间{//不再进行判断if (t % j == 0)count++;}if (t >= 0&& t <= k * (n - 1))//同上{if (t % k == 0)count++;}if (count == 3) sum= sum - 2; //判断是否有同时响的鞭炮if (count == 2) sum = sum - 1;//若有将重复的炮声去除count= 0;//每完成一次循环将count归零}printf("响声为:%d\n", sum);}


结果如下:

输入张三,李四,王五的放炮时间间隔:6 6 6输入放炮的个数:3响声为:3

输入张三,李四,王五的放炮时间间隔:3 4 5输入放炮的个数:11响声为:25

输入张三,李四,王五的放炮时间间隔:6 6 2输入放炮的个数:3响声为:3

总结

提示:这里对文章进行总结:

解决该类问题,应找出最长的放炮时间,然后对每一秒进行分析

编写一个C程序 实现以下功能: 张三 李四 王五三个人同时放鞭炮 张三每隔i秒放一个 李四每隔j秒放一个 王五每隔k秒放一个 他们各自放n个。对任意给定的i j k和n 求能听到多少声鞭炮响。

如果觉得《编写一个C程序 实现以下功能: 张三 李四 王五三个人同时放鞭炮 张三每隔i秒放一》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。