monkey.cpp

来自「该程序为猴子选大王的程序」· C++ 代码 · 共 65 行

CPP
65
字号

#include "stdio.h"
#include "malloc.h"
#define OVERFLOW -2
#define OK 1
#define FALSE 0
int n = 0;
typedef struct 
{ 
	int  *base;           //动态分配
	int  front , rear ;
} SqQueue;
int exit(int k)
{
	return k;
}
int InitQueue(SqQueue &Q)
{
	Q.base = (int*)malloc((n + 1) * sizeof(int));
	if(!Q.base)
		exit(OVERFLOW);
	Q.front = Q.rear = 0;
	return OK;
}
void xuanze(SqQueue &Q)
{
	int c = 0,i = 0,j = 0,count = 1;
	printf("请输入密码:\n");
	scanf("%d",&c);
	for(i = 0;i < n;i++)/*为圈子里的人安排编号*/
		Q.base[i] = 1;
	printf("\n出列顺序依次为:\n");
	i = 0;j = 0;
	while(count < n + 1)
	{
		if(Q.base[i] != 0)/*当前人在圈子里*/
			j++;
		if(j == c)/*若该人应该退出圈子*/
		{
			printf("%4d",i + 1);
			c = Q.base[i];
			Q.base[i] = 0;/*0表示不在圈子里*/
			count++;/*退出的人数加1*/
			j = 0;/*重新数数*/
		}
		i++;/*判断下一个人*/
		if(i == n)/*围成一圈*/
			i = 0;
	}
	if (i == 0)
		printf("\n大王序号为:%d",n);
	else
		printf("\n大王序号为:%d",i);
	printf("\n");
}
int main(int argc, char* argv[])
{
	SqQueue cq;
	printf("请输入猴子个数:\n");
	scanf("%d",&n);
	InitQueue(cq);
	xuanze(cq);
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?