甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第0

admin2020-06-16  24

问题 甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第0秒。
    例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BLANKl.C中。
    不得增行或删行,也不得更改程序的结构!
#include
/**********found***********/
#define OK(i,t,n)(( ___1___ %t==0)
&&(i/tint fun(int t1,int t2,int t3,int
t4,  int  n)
{  int count,t,maxt=t1;
    if  (maxt    if  (maxt    if  (maxt    count=1;    /*给count赋初值*/
/**********found***********/
  for(t=1; t    if (OK(t,t1,n)  || OK(t,t2,
n)||  OK(t,  t3,  n)  ||  OK(t,  t4,  n))
    Count++;
    }
/**********found***********/
  return  ___3___ ;
}
main()
{  int t1=7,t2=5,t3=6,t4=4,n=10,r ;
  r=fun(t1,t2,t3,t4,n);
  printf(“The sound:%d\n”,r);
}

选项

答案(1)i (2)t++ (3)count

解析 函数fun的功能是根据形参提供的值求出总共听到多少次鞭炮声,fun函数的参数是每个人放鞭炮的间隔时间和燃放次数。甲乙丙丁四人同时开始放鞭炮,由于间隔不同在某些时刻几个人会同时燃放,这种情况只算一次响声,因此需要考虑同时燃放的次数。
   [解题思路]
    第一空:由“if(OK(t1,n)||OK(t,t2,n)||OK(t,t3,n)||OK(t,t4,n))count++;”可知count计数听到的鞭炮声,在满足if条件时,计数加1。t时刻,至少有一个人放了一个鞭炮才能听得到声音,故t%t1==0、t%t2==0、t%t3==0、t%t4==0这四个当中至少一个成立,四者是或的关系。第一个标识下是宏OK的定义,由前面的分析可知,OK宏的作用就是判断t%i(i等于1、2、3和4)是否等于0且i/t    第二空:时间t从第一秒开始,到最大时刻结束,时间是一秒一秒增加,在每个时刻判断是否能够听到声音,故第二空是“t++”。
    第三空:变量count记录了听到的声音次数,因此count是函数的返回值,故第三空应为“count”。
转载请注明原文地址:https://jikaoti.com/ti/1YG0FFFM
0

相关试题推荐
最新回复(0)