当前位置: 代码迷 >> C语言 >> 大家来看看着个程序,有没有跟简单的方法
  详细解决方案

大家来看看着个程序,有没有跟简单的方法

热度:116   发布时间:2007-04-11 22:22:14.0
大家来看看着个程序,有没有跟简单的方法
#include <stdio.h>
#define N 50
void main()
{
int i,m,n,k,ary[N],s,d,*p;
p=ary;
printf("请输入人数:");
scanf("%d",&n);
printf("请输入从第几号开始:");
scanf("%d",&d);
printf("请输入数到几:");
scanf("%d",&s);
/*if(i=0)
*(p+i)=5;*/
for(i=0;i<n;i++)
*(p+i)=1;
i=0;
m=0;
k=0;
while(m<n-1)
{
if(*(p+i+d)!=0) //着里会不会有下标越界的错误呢?比如i+d>n的情况。
k++;
if(k==s)
{
*(p+i)=0;
k=0;
m++;
}
i++;
i=i%n;
}
while(*p==0)
p++;
printf("编号%d为的学员被当选为班长。\n",*p);

}

----------------解决方案--------------------------------------------------------
约瑟复环?
----------------解决方案--------------------------------------------------------
这个程序是要将N个人围成1圈,顺序编号,从第(自己定)个人报数(从1报到几也是自己定,比如3)凡是报到3的人就出去
然后下一个人重新开始,最后留下的就被选为班长。

----------------解决方案--------------------------------------------------------
肯定有啊!
你要对d 有个限制啊~``
----------------解决方案--------------------------------------------------------
约瑟复环

这样选班长也真搞笑,呵呵.
在论坛里搜索一下这个标题.看看别人是怎么做的吧.

----------------解决方案--------------------------------------------------------
  相关解决方案