提示:用数组完成
方式(1)
#include <stdio.h>
#define n 10
int main()
{
int a[n];
int i,quit_num,k;
for(i=0;i<n;i++)
a[i]=i+1;
quit_num = 0; //计数满3退出,数组置0,记录值+1
i=0; //计数值
k=0; //记录123循环的变量
while( quit_num<n-1)
{
if(a[i]!=0) //计数每3个计数循环
k++;
if(k==3) //满足3 数组值置0,退出值+1,记录值123循环变量置0
{
a[i]=0;
quit_num++;
k=0;
}
i++;
if(i==n) //数组从头开始循环
i=0;
}
for (i=0;i<n;i++)
if(a[i]!=0)
printf("%d",a[i]);
return 0;
}
方式(2)
#include <stdio.h>
#define SIZE 100
int main()
{
int a[30];
int n,i,out=0,num,j=0;
printf("Enter the number of people:");
scanf("%d",&n);
for(i=0;i<n;i++) //给每个人编号
a[i]=i+1;
for(i=0,num=1;(n-out)!=1;i=(i+1)%(n-out),num++) //out是排除掉的人
{
if(num%3==0)
{
for(j=i;j<n-out;j++) //将后面的人往前补空
a[j]=a[j+1];
out++;
num++;
}
}
printf("The last one is No.%d.\n",a[0]);
return 0;
}