# include <stdio.h>
#define N 13//总的人数
#define M 7//数到M就退出
int count_zero(int arr[], int n){//由于是用数组实现的,当数到M的时候就将其置为0
//如果数组中出现N-1个0的时候则程序就结束了。此函数是统计数组中0的个数。
int j = 0;
for(int i = 0; i < n; i++)
if(arr[i] == 0)
j++;
return j;
}
void print_last(int arr[], int n){//打印最后剩下的那个非0值
for(int i = 0; i < n; i++){
if(arr[i] != 0)
printf("The last is arr[%d] = %d\n",i, arr[i]);
}
}
int main(){
int i = 0, j = 0, a[N];
int *p, *q;
int flag = 1;
p = q = a;
for(i = 0; i < N; i++)
a[i] = i+1;
while(flag){
if(i != N){
if(a[i] != 0)
j++;
if(j == M){
a[i] = 0;
j = 0;
}
if(count_zero(a,N) == (N-1)){
print_last(a,N);
flag = 0;
}
p++;
i++;
}else{
++p = q;
i = 0;
if(a[i] != 0)
j++;
if(j == M){
a[i] = 0;
j = 0;
}
if(count_zero(a,N) == (N-1)){
print_last(a,N);
flag = 0;
}
p++;
i++;
}
}
return 0;
}