只能说答案就是答案,只能说太漂亮了,
代码
#include<stdio.h>
int main()
{int i,k,m,n,num[50],*p;
printf("\ninput number of person:n=");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
{*(p+i)=i+1; //以1至n为序给每个人编号
}
i=0; //i为每次循环式计数变量
k=0; //k为按1,2,3报数时的计数变量
m=0; //m为退出人数
while(m<n-1) //当退出人数比n-1少时(即未退出人数大于1时)执行循环体
{if(*(p+i)!=0)
{k++;
}
if(k==3)
{*(p+i)=0; //对推出的人的编号置为0
k=0;
m++;
}
i++;
if(i==n)//报数到尾后,i恢复为0
{i=0;
}
}
while(*p==0)
{p++;
}
printf("The last one is NO.%d\n",*p);
return 0;
}
运行结果
同楼主的
楼主就是被如何报数难道了,没想到竟然可以这样,直接用另一个变量,无需再数组里瞎掺和, ?
这篇就这样了,下一篇 指针习题6
p.s.楼主争取每天分享一道指针习题,大概20多道吧。。。