C语言问题!10个人围成一个圈!

10个人围成一个圈,从第1个人开始依次从1到8循环报数,每当报数为8时,此人出圈,从下一个人开始报1,依次进行,直到圈子中只剩一个人为止,请按退出的次序输出出圈人原来的编... 10个人围成一个圈,从第1个人开始依次从1到8循环报数,每当报数为8时,此人出圈,从下一个人开始报1,依次进行,直到圈子中只剩一个人为止,请按退出的次序输出出圈人原来的编号!(只能用数组和循环) 展开
 我来答
元宝趣学
2008-09-02 · TA获得超过1102个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:597万
展开全部
#include <stdio.h>
void main()
{
int ren[11] = {0,1,2,3,4,5,6,7,8,9,10};//每人入相应的座位
int i,j,cont;
j = 0;
cont=0;
for(i = 0; i < 11; i++)
{
if(ren[i]!=0)
{
j++;
if(j == 8)//满足退出条件
{
printf("%d ", ren[i]);//输出该人
cont++; //退出人数增加
j=0; //重新报数
ren[i]=0;//此人退出 置零
}
}
if(i==10)//循环报数
{
i=0;
}
if(cont == 10)//人全部退出 结束战斗
{
break;
}
}
printf("\n");
}
函凌霜Nr
2008-09-02 · TA获得超过110个赞
知道答主
回答量:121
采纳率:0%
帮助的人:126万
展开全部
我以前写过的。。跟你这个不一样。但原理一样

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
smusicfan
2008-09-02 · TA获得超过241个赞
知道小有建树答主
回答量:232
采纳率:100%
帮助的人:79.3万
展开全部
呵呵,这个问题可是说明C++比C优越的经典例子啊~~~

1. 数组法;
2. 循环链表法;
3. 在以上2种方法的基础上使用2个类:问题类、链表类。

整个问题的解法非常简洁:

void main()
{
JProblem.Init(1,8,1);
JProblem.Solve();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友126e8aeac
2008-09-02 · TA获得超过363个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:389万
展开全部
期待答案。嘿嘿,不好意思。我也是初学者。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式