C语言问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),

C语言问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。下面是我自己写的程序,出来的答案是错的,... C语言问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
下面是我自己写的程序,出来的答案是错的,求大神指出哪里错误
#include <stdio.h>
void main ()
{
int a[20];
int m,n,k,i=0,x;
int *p;
p=a;
printf("请输入报数人数n:");
scanf("%d",&n);
a[0]=n;
for (i=1;i<n-1;i++)
{
a[i]=i+1;
}
m=0;
while(m<n-1)
{
k=0;
while(k<3)
{
i=i%n;
if(a[i]!=-1)
{
k++;
if(k=3) i--;
}

i++;
}
a[i]=-1;
m++;
i++;
}
x=0;
while(a[x]==-1) {x++;}
printf("The last one is NO.%d\n",*(a+x));
}
展开
 我来答
White_MouseYBZ
2017-06-15 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6474万
展开全部

供参考……

#include "stdio.h"
int main(int argc,char *argv[]){
int n,ans,i;
scanf("%d",&n);
ans=0; 
if(n==0)
return 0;
for(i=2;i<=n;i++)
ans=(ans+3)%i;
printf("%d\n",ans%n+1);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式