C语言问题!10个人围成一个圈!
10个人围成一个圈,从第1个人开始依次从1到8循环报数,每当报数为8时,此人出圈,从下一个人开始报1,依次进行,直到圈子中只剩一个人为止,请按退出的次序输出出圈人原来的编...
10个人围成一个圈,从第1个人开始依次从1到8循环报数,每当报数为8时,此人出圈,从下一个人开始报1,依次进行,直到圈子中只剩一个人为止,请按退出的次序输出出圈人原来的编号!(只能用数组和循环)
展开
4个回答
展开全部
#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");
}
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");
}
展开全部
我以前写过的。。跟你这个不一样。但原理一样
有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);
}
有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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,这个问题可是说明C++比C优越的经典例子啊~~~
1. 数组法;
2. 循环链表法;
3. 在以上2种方法的基础上使用2个类:问题类、链表类。
整个问题的解法非常简洁:
void main()
{
JProblem.Init(1,8,1);
JProblem.Solve();
}
1. 数组法;
2. 循环链表法;
3. 在以上2种方法的基础上使用2个类:问题类、链表类。
整个问题的解法非常简洁:
void main()
{
JProblem.Init(1,8,1);
JProblem.Solve();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
期待答案。嘿嘿,不好意思。我也是初学者。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询