n个人围成一圈报数,从1开始,凡报到3的退出,问留到最后的是几号?
刚学指针,老师布置的题目。程序代码:
/* *报数为3的同学离开,计算最后剩下那个同学 */ #include<stdio.h> void input(int[1000],int); int wipe(int[1000],int); int main() { int n,num[1000],r; printf("请输入有几位同学:"); scanf("%d",&n); //为每位同学分配号数 input(num,n); //游戏开始 r=wipe(num,n); //输入最后胜者 printf("剩下的同学号数为: %d\n",r); return 0; } //把同学分成1-n号 void input(int *p_num,int n) { int i; for(i=0;i<n;i++) *(p_num+i)=i+1; } //游戏开始,k为出局人数,j为当前报数 int wipe(int*p_num,int n) { int j=0,k=0; for(;;++j,p_num++) { if(j==3) { k++; j=0; } *(p_num+n)=*(p_num+k); if(k==n-1) return *(p_num+n); } }自认为思路没错,但老得不到正确答案,求大神们纠正!!!