作业帮 > 综合 > 作业

2:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 07:22:38
2:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,
有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,请输出报数出列圈及最后留下的数据和在原来位置的第几号
扩展为:从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出
链表实现:
#include
#include
typedef struct Node
{
int index;
struct Node *next;
}JosephuNode;
int Josephu(int n,int m)
{
int i,j;
JosephuNode *head,*tail;
head = tail = (JosephuNode *)malloc(sizeof(JosephuNode));
for (i = 1; i < n; ++i)
{
tail->index = i;
tail->next = (JosephuNode *)malloc(sizeof(JosephuNode));
tail = tail->next;
}
tail->index = i;
tail->next = head;
for (i = 1; tail != head; ++i)
{
for (j = 1; j < m; ++j)
{
tail = head;
head = head->next;
}
tail->next = head->next;
printf("第%4d个出局的人是:%4d号\n",i,head->index);
free(head);
head = tail->next;
}
i = head->index;
free(head);
return i;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("最后胜利的是%d号!\n",Josephu(n,m));
system("pause");
return 0;
}
2:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, 用C语言编写:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,请输出报数出列圈及最 C语言:有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出(pascal 有10个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到了的人退出圈子,问最后留下的是原来第几号的那位. C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 问最后留下 C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 、用指针完成下面程序:有n个人围成一圈,顺序排号,从第一个人开始报数(从1-3报数),凡报到3的退出圈子,请编程求出最后 c语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1~3报数),报到3的人退出圈子,求退出顺序 有N个人围成一个圈顺序编号,从第一个人开始报数(从1到M),凡报到M的人退出圈子, C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子