一道C语言结构题,求大神解答: n个人依次报数,每报到m从圈中退出,依次输出退出人的号码(用数组)
答案:2 悬赏:20 手机版
解决时间 2021-02-05 19:41
- 提问者网友:轻浮
- 2021-02-05 13:45
一道C语言结构题,求大神解答: n个人依次报数,每报到m从圈中退出,依次输出退出人的号码(用数组)
最佳答案
- 五星知识达人网友:渊鱼
- 2021-02-05 14:52
main()
{int a[100],i,j,k;
for(i=0;i<100;i++)
a[i]=1;
for(i=k=0;k<100;k++)
{j=0;
while(j<10)
{i=(i+1)%100;
if(a[i])
j++;
}
a[i]=0;
}
printf("%d
",i);
getch();
}
{int a[100],i,j,k;
for(i=0;i<100;i++)
a[i]=1;
for(i=k=0;k<100;k++)
{j=0;
while(j<10)
{i=(i+1)%100;
if(a[i])
j++;
}
a[i]=0;
}
printf("%d
",i);
getch();
}
全部回答
- 1楼网友:woshuo
- 2021-02-05 15:33
#include
#include
#include
#include
void c()//清空输入缓冲函数
{
char c;
while((c=getchar())!=EOF&&c!=' ');
}
int main()
{
int n,m;
printf("输入人数:");
scanf("%d",&n);
c();
printf("输入报数:");
scanf("%d",&m);
c();
char *arry=(char *)malloc(sizeof(char)*n);//建立动态数组
bzero(arry,0);//置零
int next=-1,num=n,j=0;//next表示下标,从next+1开始报数,num表示还剩多少人,j是计数器表示报数到多少了,从0开始
while(1)
{
if(num==1)//还剩一个
break;
while(j {
next=(next+1)%n;
if(arry[next]==0)//0表示这个人没有退出
j++;
}
j=0;
arry[next]=1;//1表示人已退出
printf("%4d",next+1);
num--;
}
printf(" ");
for(j=0;;j++)
{
if(arry[j]==0)
break;
}
printf("第%4dwin ",j+1);
}
#include
#include
#include
void c()//清空输入缓冲函数
{
char c;
while((c=getchar())!=EOF&&c!=' ');
}
int main()
{
int n,m;
printf("输入人数:");
scanf("%d",&n);
c();
printf("输入报数:");
scanf("%d",&m);
c();
char *arry=(char *)malloc(sizeof(char)*n);//建立动态数组
bzero(arry,0);//置零
int next=-1,num=n,j=0;//next表示下标,从next+1开始报数,num表示还剩多少人,j是计数器表示报数到多少了,从0开始
while(1)
{
if(num==1)//还剩一个
break;
while(j
next=(next+1)%n;
if(arry[next]==0)//0表示这个人没有退出
j++;
}
j=0;
arry[next]=1;//1表示人已退出
printf("%4d",next+1);
num--;
}
printf(" ");
for(j=0;;j++)
{
if(arry[j]==0)
break;
}
printf("第%4dwin ",j+1);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯