设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出
设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编写函数Josegh(void)实现此功能,并调用函数writeDat,把结果P输出到文件out.dat中。 设n=100,s=1,m=10。 ①将1到n个人的序号存入一维数组P中; ②若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置; ③重复第②步直至圈中只剩下p[1]为止。 注意:部分源程序已经给出。 请勿改动主函数main和输出数据函数writeDAT的内容。
【审题关键句】围圈问题。
【解题思路】
①定义整型变量i、j,表示出圈人位置的变量s1和出圈人序号的变量W。并将S的值赋给变量s1(s的值已在源程序中赋值为1)。
②通过一个for循环,将n个人的序号存入一维数组P中(n的值已在源程序中赋值为100)。
③再建立一个for循环,循环变量i从n开始,即从100开始,依次递减直到其值小于2时退出循环。由于每执行一次循环,人数就会减少1个,因此,此处的for循环应表示为递减方式。在该循环体中,先计算每次出圈人的位置,通过表达式“(s1+m.1)%i”计算每次出圈人的位置(m的值已在源程序赋值为1O)。若所得结果为0,则说明要开始报数的是最后一个人,在此人前面的那个人就是要出圈的人,再通过一个循环将要出圈的人移到数组最后。
【参考答案】
![](https://www.zaojiaoba.cn/2019-12/08/1575817638-7593.jpg)
已知集合向量M={第一象限角},向量N={锐角},向量P={小于90°角},则下列关系式中正确的是 其他 2020-05-16 …
我的笔记本英文字母有些打出来是数字怎么解决?U是4,I是5,O是6,P是*,M是0,很笨,请帮忙如 其他 2020-06-14 …
万能计算器里的In怎么用?比如(1+0.5%)的M次方=2.667用计算器怎么按出M=In[2.6 其他 2020-07-18 …
已知G是△ABO的重心,M是边AB的中点已知点G是△ABO的重心,M是AB边的中点(1)求向量GA 数学 2020-07-22 …
排列(1)定义:从n个不同元素中取出m(m≤n)个元素,按照一定排成一列,叫做从n个不同元素中取出 数学 2020-07-29 …
如图,A地在M地的正北方向12千米处,B地在M地的正东方向12千米处,某人从B地出发向正方向到达A 数学 2020-07-31 …
已知数轴上两点A、B对应的数分别是6,-8,M、N、P为数轴上三个动点,点M从点A出发速度为每秒2个 数学 2020-11-20 …
若向量a=(1,m),向量b=(1,2-m),则向量a·向量b的最大值为若m>0,n>0且m+n=1 数学 2020-12-15 …
现用a根长度相同的火柴棒,按如图①摆放时可摆成m个正方形,按如图②摆放时可摆成2n个正方形.(1)写 其他 2020-12-30 …
现用a根长度相同的火柴棒,按如图①摆放时可摆成m个正方形,按如图②摆放时可摆成2n个正方形.(1)写 其他 2020-12-30 …