在学校收到一个问题,13个人围成一圈,报到三的人出圈,当只剩下最后一个人的时候,就输出出来,怎么用单循环写出来。
然后,将这个程序打出来后,觉得有必要发出来分享一下,让同样遇到这个问题的同学们(也可能不止同学们)可以参考一下。
程序如下:
#include<stdio.h>
#define N 13 //确定人数 N
int main()
{
int a[N],i,t=0,count=0; //t控制报数,i控制循环,count控制出圈人数
for(i=0;i<N;i++)
{
a[i] = i+1;
} //按照1到13进行编号
for(i=0;i<N;i++)
{
if(a[i]!=0)
t++; //报数
if(t == 3) //逢三将内容变为0表示出圈
{
a[i] = 0;
count++; //出圈人数记录
t = 0; //重新报数
}
if(i == N-1) //到末尾重新开始
i = -1;
if(count == N-1) //若只有一个未出圈,退出
break;
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
大家可以参考一下,大家有更好的思路也可以分享一下