求救!!拜托了!~!!
我是新学的,各位前辈看看这个程序怎么编吧有17个人围成一圈(编号为0到16),从第0好的人开始从1开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩一个人为止。问此人原来的位置是什么号码
----------------解决方案--------------------------------------------------------
呵呵,好做
----------------解决方案--------------------------------------------------------
偶做不出来
----------------解决方案--------------------------------------------------------
#define N 17 /*总人数*/
#define M 3 /*出局数字*/
#include <stdio.h>
main()
{
int a[N],k=0,i,j;
printf("\n\n The original orders are :\n");
for(i=0;i<N;i++) /*初始位号并显示*/
{
a[i]=i+1;
printf("%3d",a[i]);
}
printf("\n");
for(i=0;k<N*M;i++) /*循环实现出局*/
{
if(a[i%N]!=-1)
{
k++; /*报数计数器*/
if(k%3==0)
{
a[i%N]=-1; /*3倍数出局*/
printf("\n%2d is out!",(i%N+1));
if(k!=N*3)
printf("The new order is:");
else
printf("The game is over!");
for(j=0;j<N;j++)
{
if(a[j]!=-1)
printf("%3d",a[j]); /*出局信息显示*/
}
}
}
}
getch();
return;
}
----------------解决方案--------------------------------------------------------
yk87458410,你真是牛人啊!!!小弟对你的敬仰有如黄河之水漫金山。
----------------解决方案--------------------------------------------------------
类似"猴子选大王"题
----------------解决方案--------------------------------------------------------