问题补充说明:幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。 每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。 现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。 输入: 小朋友的个数(<=50) 要被练习的数字 输出: 最终被留下的小朋友的序号 说明: 如“要被练习的数字”是5,则每次数到5的同学要退出该游戏下面这个程序没看懂,哪位大神能够注释一下?#include
#include<stdio.h>//定义头文件
voi培dmain()//来自主函数
{
inta[51],i,j,x,n;//定义变量和数组
scanf("%d%d",&n,&j);//从输入终端输入变量
for(i360问答=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);输出
}
这个程序虽然简单,但新手最好别这么写!
如果需要,我可以给你写一个能看懂的!
欢迎追问,望采纳!
标签:出圈,C语言,约瑟夫