有意思的问题,不过这种报法不论有多少人,第一个报数的人好象都不会是最后留下的那个,那位大大可以编个程序验证一下啊


程序代码:#include<stdio.h>
#include<memory.h>
#define MAX_SIZE 30
typedef struct
{
int number;
int flag;
}People ;
People a[MAX_SIZE];
int main(void)
{
int i=0;
int j=0;//j表示被投入大海的人数
memset(a,0,MAX_SIZE*sizeof(People));//清空数组
for(i=0;i<MAX_SIZE;i++)
a[i].number=i+1;//初始化结构体数组
printf("开始扔人啦.\n");
while(j<=14)//这个大的循环是为了按照123的顺序将数到3的人投入大海中
{
while(1)
{
if(a[i].flag==0)
{
i=(i+1)%MAX_SIZE;
break;
}
else i=(i+1)%MAX_SIZE;
}
while(1)
{
if(a[i].flag==0)
{
i=(i+1)%MAX_SIZE;
break;
}
else i=(i+1)%MAX_SIZE;
}
while(1)
{
if(a[i].flag==0)
{
a[i].flag=1;
i=(i+1)%MAX_SIZE;
j++;
break;
}
else i=(i+1)%MAX_SIZE;
}
}
printf("幸运者如下.\n");
for(i=0;i<30;i++)
{
if(a[i].flag==0)
printf("\n%d\n",a[i].number);
}
return 0;
}ps:等我用链表再写一个约瑟夫,我再上传上来哈,呵呵,大家一起加油哈