早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

设有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,则说明要开始报数的是最后一个人,在此人前面的那个人就是要出圈的人,再通过一个循环将要出圈的人移到数组最后。
【参考答案】

看了设有n个人围坐一圈并按顺时针方...的网友还看了以下:

中国自然经济逐步走向解体的标志是A.外国洋行大量出现B.农业生产进一步商品化C.家庭手工棉纺织业开 其他 2020-05-13 …

跪求!C++!利用循环链表实现约瑟夫问题的求解约瑟夫问题如下:已知n个人(n>=1)围坐一圆桌周围 其他 2020-05-17 …

如果有一天你们六个人开船出海捕鱼,出海十多天了,捕了一船的渔,准备反航,暴雨和风浪越来越大,渔船突 其他 2020-05-24 …

上网者每天接触到的Yahoo(雅虎)检索工具软件是由斯坦福大学的两位年轻人开发出来的,他们是()。 计算机类考试 2020-05-31 …

英语作文一篇最近,旅游法(tourismlaw)开始实施(carryout).旅游已经成为人们生活 英语 2020-06-08 …

史学家白寿彝指出:“隋炀帝开运河,适应了新形势的需要。固然隋炀帝的初意是在游玩享乐,但时代的需要纵 历史 2020-06-16 …

C++约瑟夫问题:求源代码及说明约瑟夫问题:M个人围成一圈,从第一个人开始报数,数到N的人出圈;再 其他 2020-07-07 …

一个C++约瑟夫环的问题一群人围坐一圈,每人一个密码,一开始人选一个正整数作为报数上线M,丛第一个 其他 2020-07-29 …

19世纪末20世纪初,美国出现了一种新的科学的生产管理方式--泰罗制。20世纪初,泰罗制被广泛推广, 历史 2020-11-22 …

“敢问路在何方?路在脚下”,道出了路是人开创出来的道理。唐僧西天取经,历经千辛万苦。但他矢志不渝,终 语文 2021-01-06 …