c 语言数组实现约瑟夫生者死者小游戏

代码比较简单,直接上代码:

#include 
#include
#include
int main(void)
{	//定义一个大小为31的数组,计数的时候使用1到30的地址,初始化所有在船上的状态为0
	char arry[31] = {0};
	//定义变量speek为报号数,变量i为他们的编号,变量count为船上的人数
	int speek = 1, i = 1, count = 30;
	while (count > 15) {
		//判断报号为9的时候并且编号对应的人没有下船则让这个编号的人下船,船上人数减一,报号清零,当前编号的人状态置1
		if (speek == 9 && arry[i] == 0) {
			count--;
			speek = 0;
			arry[i] = 1;
			printf("%d号下船!\n", i);
		}
		//判断如果报号数没到9,编号加1,报号数加1
		if (speek < 9) {
			speek++;
			i++;
		}
		//判断如果当前报号的人状态是下船的,则报号数不算,报号减1
		if (arry[i] == 1) {
			speek--;
		}
		//如果编号达到了31表示该回到第一位了,重新置1
		if (i == 31) {
			i = 1;
		}
	}
}

c 语言数组实现约瑟夫生者死者小游戏_第1张图片

你可能感兴趣的:(数据结构与算法)