1. 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
提示:用数组完成
#include <stdio.h>
int main()
{
int a[100];
int num,i,quit_num,k;
printf ("please input gamepeople!\n");
scanf ("%d",&num);
for(i=0;i<num;i++) /*数组a存放原始编号*/
{
a[i]=i+1;
}
quit_num=0; /*定义初始出圈人数*/
i=0;
k=0;
while(quit_num < num-1) /*当出圈人数小于总人数-1时进入while循环,下面的循环里还会找出最后出圈的*/
{
if(a[i]!=0)
{
k++;
if(k==3)
{
a[i]=0;
k=0;
quit_num++;
}
}
if(i == num-1)
{
i=0;
}
else
{
i++;
}
}
for(i=0;i<num;i++) /*输出最后留下来人的编号*/
{
if(a[i]!=0)
{
printf ("%d\n",a[i]);
}
}
return 0;
}
ps:该源代码主要要注意循环语句的逻辑是否正确。