【任务帖】2014年8月12日C语言题目- 约瑟夫环
xiaoz吧
全部回复
仅看楼主
level 9
奋斗丶小Z 楼主
2014年08月11日 16点08分 1
level 9
奋斗丶小Z 楼主
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
很多同学看着是不是很眼熟呀 [笑眼]
2014年08月11日 16点08分 2
level 9
书上的题目[阴险]
2014年08月12日 02点08分 3
是书上的题。
2014年08月12日 02点08分
level 9
#include <stdio.h>
void main()
{
int a,b,i,n,p[20];
printf("请输入有多少的人");
scanf("%d",&n);
for(i=1;i<n+1;i++)
p[i]=i;
i=1; //成员的编码
a=0; //报数的数字
b=0; //被淘汰的人的个数
while(b<n-1)
{
if(p[i]!=0)
a++;
if(a==3)
{
p[i]=0;
b++;
a=0;
}
i++;
if(i==n+1)
i=1;
}
for(i=1;i<n+1;i++)
if(p[i]!=0)
printf("第%d号没有被淘汰\n",i);
}
2014年08月12日 02点08分 4
这里发程序运行截图就好了。
2014年08月12日 02点08分
不能影响别人做题,不是吗[吐舌]
2014年08月12日 02点08分
回复 奋斗丶小Z :[勉强]以后注意一点
2014年08月12日 02点08分
这个无法实现n次的,要使用单向链表
2014年08月12日 15点08分
level 8
这就 公布答案了
2014年08月12日 04点08分 5
你可以自己写的。
2014年08月12日 05点08分
回复 奋斗丶小Z :我什么都没看见 自己写
2014年08月12日 13点08分
level 9
奋斗丶小Z 楼主
运行效果图:
2014年08月12日 16点08分 6
level 9
奋斗丶小Z 楼主
2014年08月12日 16点08分 7
level 9
奋斗丶小Z 楼主
================================================
#include<stdio.h>
#define nmax 50
int main(void)
{
int i=0,k=0,m=0,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);//获取总数,不大于nmax
p=num;//num的地址给了p
for(i=0;i<n;i++)
{
*(p+i) = i+1;
}//给数组的n个元素赋值
i=0;
while(m<n-1)
{
if(*(p+i)!=0)
k++;
if(k==3)
{
*(p+i) = 0;
k = 0;
m++;
}
i++;
if(i==n)
i = 0;
}
while(*p==0)
p++;
printf("%d is left\n",*p);
}
======================================
2014年08月12日 16点08分 8
level 9
奋斗丶小Z 楼主
明天补上单向链表的做法。[勉强]
2014年08月12日 16点08分 9
level 8
出这么难的题[升起][升起]
2014年08月13日 00点08分 10
1