题目:17 个人围坐一圈,顺序编号为 1,2,3,…,17。现在从第一个人开始数起,每数到 7 时,这个人就从圈里出来,再从下一个数重新开始数 1,2,…,7,数到第 7 的这个人也从 圈里出来,直到全部 17 个人从圈里出来为此。例如,前面站出来的 4 个人是 7,14,4 和 12。编程输出从圈里出来的人的顺序。
思路:将已经输出的位置的数字置0,在以后的输出中,如果该位置为0,则不输出
代码:
#include<stdio.h>
int main()
{
int t,i,j=1,k=0,a[17];
//k--统计已经输出了多少个数
for(i=0;i<17;i++)
a[i]=i+1;
//将1~17存入a[i]中
do
{
for(i=0;k<17;i++)
{
t=i%17;
if(a[t]!=0&&j==7)
{
printf("%d ",a[t]);
a[t]=0;
j=1;
k++;
}
if(a[t]==0) continue;
j++;
}
}while(k<17);
/*大循环--控制数组a[i]的遍历,直至a[i]所有数都输出
小循环--输出满足条件的数*/
printf("\n");
}
运行结果: