/*题目:有n(n<100)个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出*/
#include "stdio.h"
count(int x)
{int i=0,j,k,m;
int a[100];
for(i=0;i<99;i++)
a[i]=0;
m=x;
while(m>=3)
{j=0;
for(i=0;i<x;i++)
if(a[i]==0)
{j++;
k=i+1;
if(j/3==1)
{a[i]=1;
m--;
j=0;
printf("the kicked man is the %dth\n",i+1);
}
}
}
getch():
while(i<x&&a[i]==0)
{printf("the left people is the %dth\n",i+1);
getch();
i++;
}
}
main()
{
int n;
printf("the total people is:");
scanf("%d",&n);
count(n);
}
基本思想:首先将给数组所有元素赋值0,在循环的过程中,如果被踢出去,则赋值1,最后判断剩下元素值为0的数则是所要求答案。
问题1:以输入10为例,the kicked man输出正确3、6、9、4、8、5、7、10;第二个while好像没有运行;
问题2:如果n没有限定,又如何写这个程序?