鱼C论坛

 找回密码
 立即注册
查看: 64|回复: 5

计算鞭炮响声中的循环条件为什么是这样?

[复制链接]
发表于 2024-12-4 14:49:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 跑不掉 于 2024-12-4 16:45 编辑

四个人同时放鞭炮,甲每t1秒放一次,乙每t2秒放一次,丙每t3秒放一次,丁每t4秒放一次
,每人各放n次,求总共听到多少次鞭炮声,当几个鞭炮同时炸响,只算一次响声,第一次响声在第0秒。

我的问题是:为什么,fun函数里的for循环条件是i<maxt而不是i<=maxt???
#include <stdio.h>

int fun(int t1,int t2,int t3,int t4,int n)
{
        int count,i,maxt;
        count=1;
        
        maxt=(t1>t2)? t1:t2;
        maxt=(maxt>t3)? maxt:t3;
        maxt=(maxt>t4)? maxt:t4;
        
        maxt=maxt*(n-1);
        
        
        for(i=1;i<maxt;i++)
        {
                if((i%t1==0&&i/t1<n)||(i%t2==0&&i/t2<n)||(i%t3==0&&i/t3<n)||(i%t4==0&&i/t4<n))
                {
                        count++;
                }
        }
        
        return count;
}

int main()
{
        int t1,t2,t3,t4,n,count;
        
        t1=7,t2=5,t3=6,t4=4,n=10;
        count=fun(t1,t2,t3,t4,n);
        
        printf("总共可以听到%d次鞭炮声\n",count);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-4 14:49:16 | 显示全部楼层
在这个问题中,`fun`函数的循环条件是为了计算在给定的时间范围内,鞭炮响声的总次数。具体来说,`maxt`是计算的最大时间范围,确保所有人都能放完`n`次鞭炮。以下是对代码中循环条件的解释:

1. **最大时间计算**:  
   `maxt`的计算是为了找到四个人中放鞭炮最慢的一个人所需的总时间。通过比较`t1`, `t2`, `t3`, `t4`,找到最大的那个时间间隔,然后乘以`(n-1)`,因为每个人都要放`n`次鞭炮。

2. **循环条件**:  
   `for(i=1; i<=maxt; i++)`的循环条件是为了遍历从第1秒到`maxt`秒的每一秒,检查在每一秒是否有鞭炮响声。`i`从1开始,因为题目中提到第一次响声在第0秒,而我们需要计算的是从第1秒开始的响声。

3. **响声计算**:  
   在循环中,通过检查`i`是否是`t1`, `t2`, `t3`, `t4`的倍数来判断在第`i`秒是否有鞭炮响声。如果是倍数,则表示在这一秒有鞭炮响声。

通过这种方式,程序能够准确计算出在给定时间范围内的鞭炮响声总次数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-4 15:38:24 | 显示全部楼层
FishC 发表于 2024-12-4 14:49
在这个问题中,`fun`函数的循环条件是为了计算在给定的时间范围内,鞭炮响声的总次数。具体来说,`maxt`是 ...

for循环条件应该是i<=maxt,还是i<maxt?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-4 15:38:33 | 显示全部楼层
跑不掉 发表于 2024-12-04 15:38
for循环条件应该是i


在这个问题中,`for`循环的条件是为了遍历时间范围内的每一秒,检查是否有鞭炮响声。通常,`for`循环的条件会是`i`从1开始,直到`maxt`,因为`maxt`是所有人放完`n`次鞭炮所需的最大时间。

具体来说,`for(i=1; i<=maxt; i++)`的条件是为了在每一秒检查是否有鞭炮响声。通过这种方式,可以统计在整个时间范围内,鞭炮响声的总次数。

如果你有具体的代码片段需要我参考,请提供相关的行号信息。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-4 15:40:58 | 显示全部楼层
FishC 发表于 2024-12-4 15:38
在这个问题中,`for`循环的条件是为了遍历时间范围内的每一秒,检查是否有鞭炮响声。通常,`for`循环的 ...

但是这道题答案是i<maxt,这是为什么?如果每人放10次鞭炮,得出的结果应为28
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-4 15:47:14 | 显示全部楼层
跑不掉 发表于 2024-12-04 15:40
但是这道题答案是i


在这道题中,`for`循环的条件`i`从1开始,直到`maxt`,是为了遍历每一秒,检查是否有鞭炮响声。`maxt`是所有人放完`n`次鞭炮所需的最大时间。通过这种方式,可以确保在整个时间范围内计算所有可能的鞭炮响声。

如果你有具体的代码片段需要我参考,请提供相关的代码行号,我会更详细地解释。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 02:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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