云南大学数学与统计学实验教学中心
《高级语言程序设计》实验报告
一、 实验目的
1. 掌握数组的概念和使用方法。练习动态分配与释放数组空间的方法。
2. 体会模型设计在程序设计中的应用。
二、 实验环境
Windows10 Pro Workstation 17134.165;
Cygwin GCC 编译器。
三、 实验内
设有
个人围做在圆桌周围,从某个位置开始用自然数进行编号为
。然后从编号为
的人从
开
始报数,数到
的人便出列;下一个人(第
个)又从容不迫开始报数,数到
的人便是第二个出列的人。
如此继续下去直到最后一个人出列为止。要求输出这个出列的顺序。
这个问题称为雅瑟夫问题。
具体要求如下:
(1)
,
,
由键盘输入,输入前要有提示。
(2)在输入
后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释放该存储空间。
(3)在输出时,各编号之间用两个空格来分隔。
(4)分别用
,
,
以及
,
,
调试运行你的程序。
方法提示:
设以自然数
为元素构成一个环形队列,并用一个长度为
的一维数组
存放各元素,即数组元
素
表示元素
的下一个元素。显然,在开始时,该数组的各元素如下:
(为直观起见,其中数组元素
不用),随着报数的进行,不断地有元素从队列中出来,这个数组中的元素
值也在不断地变化,即当有元素出列后,某些元素
的下一个元素就不一定是
了。
一般来说,假设当前要出列的元素为
,它的前一个元素为
,则有
,且
的下个元素为
。即当前状
态为
,当
出列以后,将变为
,此时
的下一个元素已不是
,而是原来
的下
评论0