1.
需求分析
问题定义:一堆猴子都有编号,编号是
1
,
2
,
3
…
n,
这群猴子(
n
个)按照
1-n
的顺序围坐
一圈,从第
1
个开始数,每数到第
m
个,该猴子就要离开此圈,这样依次下来,直到圈中
只剩下最后一只猴子,则该猴子为大王。
m
,
n
键盘输入,且
m
,输出为大王的猴子的号
数。
问题分析:根据任务描述可知,编号是
1
,
2
,
3
…
n
的一群猴子按照
1-n
的顺序围坐一圈,
因此可以用指针指向数组的方法给数组赋值,
输入
n
值和
m
值,
为保证
m
,
用一个
while( )
语句实现,如果输错,报错,再输入。用
for
循环实现猴子编号。从
1
开始数到
m
的猴子出
列,即用指针移动查找法将计数器数到
m
的指针指向的内容变为
0
,用
for
循环,直到只有
一个元素不为
0
时,
最后不为
0
的元素的值即为大王。
实现这个程序功能需
3
个模块,
一个
模块用数组指针实现猴子编号,
一个模块用指针移动查找法实现猴子出局,
最后主模块将前
两个模块要用到的函数,数组定义。具体步骤如下:
第一步
建立数组,填入猴子编号及猴子出局时报的数
第二步
从第一个猴子报数
第三步
数到
m
让指针指向元素变为
0
第四步
继续报数,重复第三步
2.
概要设计
(流程图)