level 9
#include <stdio.h>
void main()
{
int a,b,i,n,p[20];
printf("请输入有多少的人");
scanf("%d",&n);
for(i=1;i<n+1;i++)
p[i]=i;
i=1; //成员的编码
a=0; //报数的数字
b=0; //被淘汰的人的个数
while(b<n-1)
{
if(p[i]!=0)
a++;
if(a==3)
{
p[i]=0;
b++;
a=0;
}
i++;
if(i==n+1)
i=1;
}
for(i=1;i<n+1;i++)
if(p[i]!=0)
printf("第%d号没有被淘汰\n",i);
}
2014年08月12日 02点08分
4
这里发程序运行截图就好了。
2014年08月12日 02点08分
不能影响别人做题,不是吗
2014年08月12日 02点08分
回复 奋斗丶小Z :
![[勉强]](/static/emoticons/u52c9u5f3a.png)
以后注意一点
2014年08月12日 02点08分
这个无法实现n次的,要使用单向链表
2014年08月12日 15点08分
level 9
================================================
#include<stdio.h>
#define nmax 50
int main(void)
{
int i=0,k=0,m=0,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);//获取总数,不大于nmax
p=num;//num的地址给了p
for(i=0;i<n;i++)
{
*(p+i) = i+1;
}//给数组的n个元素赋值
i=0;
while(m<n-1)
{
if(*(p+i)!=0)
k++;
if(k==3)
{
*(p+i) = 0;
k = 0;
m++;
}
i++;
if(i==n)
i = 0;
}
while(*p==0)
p++;
printf("%d is left\n",*p);
}
======================================
2014年08月12日 16点08分
8