求高手编一条程序

来源:百度知道 编辑:UC知道 时间:2024/05/08 19:32:44
有17个人围成一个圈(编号0~16),从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止,问此人原来的位置是多少号.?
要求用数组编~

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int people[17];
int total = 0;
int i, num;
for(i = 0; i < 17; i++)
{
people[i] = 1;//1代表没出局,0代表出局
}
i = 0;
num = 1;
while(total < 16)//出局16个人
{
if(people[i])//没有出局的人报数
{

if(num == 3)
{
people[i] = 0;
total++;
}
num = (num) % 3 + 1;
}
i = (i+1) % 17;
}
for(i = 0; i < 17; i++)
{
if(people[i] == 1)
{
printf("序号是%d\n", i);
break;
}
}
return 0;
}

http://topic.csdn.net/t/20060330/12/4650858.html