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));
} 展开
下面是我自己写的程序,出来的答案是错的,求大神指出哪里错误
#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));
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |