您的位置首页百科问答

C语言约瑟夫出圈问来自题

C语言约瑟夫出圈问来自题

的有关信息介绍如下:

问题补充说明:幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。 每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。 现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。 输入: 小朋友的个数(<=50) 要被练习的数字 输出: 最终被留下的小朋友的序号 说明: 如“要被练习的数字”是5,则每次数到5的同学要退出该游戏下面这个程序没看懂,哪位大神能够注释一下?#include void main() { int a[51],i,j,x,n; scanf("%d %d",&n,&j); for ( i=0;i<=n-2;i++) a[i]=i+1;a[n-1]=0;x=n-1; while( a[x]!=x ) { for( i=1;i<=j-1;i++) x=a[x]; a[x] = a[a[x]]; } printf( "The left child is NO %d.",x+1 ); }

C语言约瑟夫出圈问来自题

#inclu360问答de<stdio.h>//定义头文件

voidmain()//主函数

{

包衣剂改六固案吧inta[51]都远劳照社护,i,j,x,n;//定义变量和数组

scanf("%d%d",&n,&j);//从输入终端输入变量

for(i=0;i<=n-2;i++)a[i]职触担置福=i+1;a[n-1]=0;x=n-1;//用for语句实现第一个循环,表示出圈的人数

while(a[x]!=x)//while语句判断旧刻远数组内标记的人是否出圈

{for(i=1;i<=j-1吃级岁;i++)

x=a[x结出搞末];标记出圈的人

a[x]=a[a[x]];

}

printf("TheleftchildisNO%d.",x+1);输出

}

这个程序虽然简单,但新手最好别怎思这么写!

如果需要,我可以给你写一个能看懂的!

庆灯坏清迎追问,望采纳!