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

admin2019-03-06  14

问题 甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第0秒。
    例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BLANK1.C中。
    不得增行或删行,也不得更改程序的结构!
#inolude
/**********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,
r1)|| OK(t,  t3,  n)  ||  OK(t,  t4,  n))
    count++;
    }
/**********found**********/
    retuErl___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

解析 第一空:由“if(OK(t,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://kaotiyun.com/show/dIRp777K
0

最新回复(0)