/*C实现: 约瑟夫环 */
#include "stdio.h"
#define N 28
void main()
{
char S1S88[N][15]={
"廖", "吴", "陈", "颜", "梅", "甘",
"威", "钟", "黄", "李", "应", "协",
"广", "朱", "陈", "王", "陈", "胡",
"纬", "林", "梁", "婷", "维", "英",
"利", "张", "辉", "颖"};
char bl[N];
int i,n;
int index; //索引,轮到第几个人了
int lastnum=N; //剩余人数
int countNum=0; //报的数字
for(i=0;i<N;i++)
{ bl[i]=1; } //28个人都参与报数
printf("请输入从第几个人开始报数:");
scanf("%d",&n);
printf("\n从%s开始报数:",S1S88[n-1]);
index=n-1;
while(lastnum>1) //如果剩余人数大于1 说明还要继续报数
: 核心代码
{
if(bl[index])
{
countNum++;
if(countNum==3)
{ countNum=0;
bl[index]=0; //标记报了3
lastnum--; //剩余人数-1
}
}
index++; //下一个人
if(index==N) //回来继续报数
index=0;
}
//输出
for(i=0;i<N;i++)
{
if(bl[i])
printf("\n\n留下来的是:%s",S1S88[i]);
}
}
//2013-11-25 小高
11万+

被折叠的 条评论
为什么被折叠?



