版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/88085062
题目
13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子。找出最后留在圈子里的人的序号。
代码
#include <stdio.h>
#define n 13
typedef struct {
int number;
int nextp;
} person;
int main() {
person link[n];
int i,count,h;
for(i=1; i<=n; i++) {
if(i==n) link[i].nextp=1;
else
link[i].nextp = i+1;
link[i].number = i;
}
count = 0;
h = n;
printf("sequence that person leave the circle: \n");
while(count<n-1) {
i=0;
while(i!=3) {
h = link[h].nextp;
if(link[h].number) i++;
}
printf("%d ",link[h].number);
link[h].number = 0;
count++;
}
printf("\nThe last one is: ");
for(i=1;i<=n;i++){
if(link[i].number) printf("%d",link[i].number);
}
return 0;
}