为什么它只被执行了一次
我编了这样一个程序用来实现约瑟夫问题:
#include <stdio.h>
#define max_num 100
typedef struct node
{int number;
int flag;
}nodetype;
void main(void)
{nodetype array[max_num];
int i, j, k, m, n, l;
printf("input three integers: ");
scanf("%d%d%d", &i, &j, &k); /* i为总的个数, j开始位置, k为离开位置 */
printf("\n");
printf("input %d integers:\n", i);
for(m=0; m<i; m++)
{scanf("%d", &array[m].number);
array[m].flag=0;
}
printf("\n");
printf("The privite array is:\n");
for(m=0; m<i; m++)
printf("%4d", array[m].number);
l=i;
printf("\n");
printf("The leaving number:\n");
while(l>1)
{n=1;
for(m=j; m<i; m++)
{if(n==k&&array[m].flag==0)
{printf("%4d", array[m].number);
array[m].flag=1;
n=1;
}
else n++;
}
l--;
}
printf("\n");
}
可是当我输入10 1 4
然后再输入1——10
执行的结果怎么会只有4 跟8被打印了出来呢?