C语言约瑟夫环
答案:1 悬赏:80 手机版
解决时间 2021-03-09 20:15
- 提问者网友:箛茗
- 2021-03-09 01:36
C语言约瑟夫环一共三十人,报到九就除去,最后剩下十五人,求剩下十五人的号数
最佳答案
- 五星知识达人网友:长青诗
- 2021-03-09 02:40
//约瑟夫环---数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* s=NULL;
int i,n,m,k,p=0,count=0;
printf("请输入共有多少人: ");
scanf("%d",&n);
printf("\n请输入数到几的人出列: ");
scanf("%d",&m);
printf("\n请输入剩余几个人时程序中止: ");
scanf("%d",&k);
s=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
s[i]=i+1;
}
while(count<n)
{
i=1;
while(1)
{
if(p>=n)
{
p=0;
}
if(s[p]==0)
{
p++;
continue;
}
if(i==m)
{
s[p]=0;
p++;
count++;
break;
}
i++;
p++;
}
if(n-count==k)
{
printf("\n");
for(i=0;i<n;i++)
{
if(s[i]!=0)
printf("%d ",s[i]);
}
break;
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* s=NULL;
int i,n,m,k,p=0,count=0;
printf("请输入共有多少人: ");
scanf("%d",&n);
printf("\n请输入数到几的人出列: ");
scanf("%d",&m);
printf("\n请输入剩余几个人时程序中止: ");
scanf("%d",&k);
s=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
s[i]=i+1;
}
while(count<n)
{
i=1;
while(1)
{
if(p>=n)
{
p=0;
}
if(s[p]==0)
{
p++;
continue;
}
if(i==m)
{
s[p]=0;
p++;
count++;
break;
}
i++;
p++;
}
if(n-count==k)
{
printf("\n");
for(i=0;i<n;i++)
{
if(s[i]!=0)
printf("%d ",s[i]);
}
break;
}
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯