C语言:10人围一圈,1到8循环报数,报数为8的出圈到圈中剩一人为止按退出次序输出出圈人原来的号

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:25:23
请用C语言写:10人围一圈,从第1人依次从1到8循环报数,每报数为8的出圈,到圈中只剩一人为止,按退出次序输出出圈人原来的号.

可以用结构体链表做,这里用数组处理如下
#include<stdio.h>

main()
{
int a[10];
int i;
int k=0;
int n=0;
for(i=0;i<10;i++)
{
a[i] = i + 1;
}
for(i=0;;i++)
{
if(a[i]!=0)
{
k++;
}
if(k==8)
{
printf("%d ",a[i]);
a[i]=0;
k=0;
n++;
}
if(i==9)
i=0;
if(n==10)
break;
}
}

#include <stdio.h>
int main(void)
{
int n, m, i, s=0;
printf ("N M = "); scanf("%d%d", &n, &m);
for (i=2; i<=n; i++) s=(s+m)%i;
printf ("The winner is %d\n", s+1);
}
说明:只要输入N=10,M=8即可满足你的要求 还可以有其他变化 其中n为总人数 M为报数最大值