求助,关于丢手帕问题
纠结看视频教程是老师说有个丢手帕问题:N个孩子围成一圈报数,报到M的退出,剩下的再从1继续报数,,报到M的再退出,一直持续到只剩一个人,问剩下的是哪个。想独立解决这个问题,后来发现自己办不到,就降低难道,改为10的小孩围城一圈,报到4的退出,程序虽然费劲巴拉的写出来了,可总也不对,纠结2天了都没办法求助大家吧,帮看
程序代码:
#include<stdio.h> main() { int a[10]; /*定义一个有十个元素的数组,存放编号*/ int i,j,*k,p=1,t=0,m=1; /*i,j用于循环,k为指向数组元素的指针,p用来记录指针移动次数*/ for(i=0;i<10;i++) /*t用来记录已经退出的个数,m累计10次后指针回归数组首元素*/ a[i]=i+1; /*为数组循环赋值1~10*/ k=a; /*指针指向首元素*/ for(j=1;j<1000;j++) { if((m-1)%10==0)k=a; /*m累计10次后指针回指*/ if(*k==0){k++;m++;} /*若指针指向的元素值为0,指针下移,m累计加1*/ if(p%4==0) { /*指针有效移动(所指向元素不为0)后,将指针所致元素赋值为0,t累计加1*/ *k=0; t++; if(t==9) /*t累计为9(即已经有9个元素被赋值为0)后,跳出循环*/ break; } k++; /*无论以上if语句是否成立,每次循环,k、m、p均累计加1*/ m++; p++; } for(i=0;i<10;i++) { /*循环输出数组中值不为0的元素*/ if(a[i]!=0) printf("%d\t",a[i]); } return 0; }各位朋友,我是没办法了,求助啊,帮我看看哪里的问题,感激不尽