一道C语言结构题,求大神解答: n个人依次报数,每报到m从圈中退出,依次输出退出人的号码(用数组)
发布网友
发布时间:2022-05-06 13:44
我来回答
共2个回答
热心网友
时间:2023-10-09 20:30
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<strings.h>
void c()//清空输入缓冲函数
{
char c;
while((c=getchar())!=EOF&&c!='\n');
}
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<m)//报数到了退出
{
next=(next+1)%n;
if(arry[next]==0)//0表示这个人没有退出
j++;
}
j=0;
arry[next]=1;//1表示人已退出
printf("%4d",next+1);
num--;
}
printf("\n");
for(j=0;;j++)
{
if(arry[j]==0)
break;
}
printf("第%4dwin\n",j+1);
}
热心网友
时间:2023-10-09 20:31
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\n",i);
getch();
}