C语言约瑟夫环的问题当为三时出局,求解下面的的代码为什么实现不了?
#include<stdio.h>#defineM3#defineN10voidprint(int*p,intn){inti;for(i=0;i<n;i++)printf...
#include<stdio.h>
#define M 3
#define N 10
void print(int*p,int n)
{
int i;
for(i=0;i<n;i++)
printf("%3d",p[i]);
printf("\n");
}
int main(void)
{
int a[N],p=N,count=0;
int i;
for(i=0;i<10;i++)
a[i]=i+1;
i=0;
while(1)
{ if(p==0)
break;
if(a[i]>0)
count++;
if(count%M==0)
{
a[i]=0;
p--;
print(a,N);
}
i++;
if(i==10)
i=0;
}
return 0;
} 展开
#define M 3
#define N 10
void print(int*p,int n)
{
int i;
for(i=0;i<n;i++)
printf("%3d",p[i]);
printf("\n");
}
int main(void)
{
int a[N],p=N,count=0;
int i;
for(i=0;i<10;i++)
a[i]=i+1;
i=0;
while(1)
{ if(p==0)
break;
if(a[i]>0)
count++;
if(count%M==0)
{
a[i]=0;
p--;
print(a,N);
}
i++;
if(i==10)
i=0;
}
return 0;
} 展开
1个回答
展开全部
#include<stdio.h>
#define M 3
#define N 10
void print(int*p,int n)
{
int i;
for(i=0;i<n;i++)
printf("%3d",p[i]);
printf("\n");
}
int main(void)
{
int a[N],p=N,count=0;
int i;
for(i=0;i<10;i++)
a[i]=i+1;
i=0;
while(1)
{
if(p==0)
break;
if(a[i]>0)
count++;
if(count==M) //当a[i]==0时,且count是M的倍数时,这里陷入错误状况,这样修改就好了
{
a[i]=0;
p--;
print(a,N);
count=0; //重新计数
}
i++;
if(i==10)
i=0;
}
return 0;
}
追问
你用的是什么编译器?
追答
以上显示是百度的回答格式,与我的编译器无关,我用的Vc6
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询