一道C语言题,紧急啊……

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:17:57
有n个人围成一圈,按顺序从1到n编号好,从第一个人开始报数,报到3的人退出圈子,下一个人从1开始报数,报到3的人就退出圈子。如此下去,直到留下最后一个人。请按退出顺去输出圈子的顺序的人的编号……

很简单:呵呵
#include"stdio.h"
void main()
{ int i,j,k,m,n,num[50],*p;
printf("enter number of perple: n=\n");
scanf("%d"&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=k=m=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("The last one is NO.%d\n",*p);

}

这个数学题我不会做啊

没分啊!~

我用两种方法解决这个问题,一个用数组,另一个用链表,我有源码,不过既然无悬赏分,就算了吧

#include"stdio.h"
void main()
{ int i,k,n,m,num[50],*p;
printf("enter number of people:");
scanf("%d",&n);
p=num;
for(i=0;i<10;i++)
*(p+i)=i+1;
i=0;k=0;m=0;
while(m<n-1)
{
if(*(p+i)!=0)
k++;
if(k==3)
{
k=0;
m+