求助,关于丢手帕问题
纠结看视频教程是老师说有个丢手帕问题: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;
}各位朋友,我是没办法了,求助啊,帮我看看哪里的问题,感激不尽





疑惑中,很茫然,

