#define N 10
void main()
{
char student[N];//N個人,1表示未退出,0表示已經退出
int out[N];//退出的人的號碼記錄
int count = -1;//循環計數 0,1,2 <=> 1-3
int num_out = -1;//退出號碼記錄的數組的下標
memset(student, 1, sizeof(student));//將所有人狀態置為1(未退出)
for (int i = 0; i < N && num_out < N - 1; i = ++i % N)
{
if (1 == student[i] && 2 == ++count%3)
{
//未退出的人計數到2的人標記退出,並將號碼保存到out數組中
student[i] = 0;
out[++num_out] = i;
}
}
//循環輸出退出的號碼
for (int i = 0; i < N; ++i)
{
printf("%d\t", out[i]+1);
}
}
PS:剛寫的,簡單驗證過:OK