题目是,有n个人,按顺序围成一圈,从第一个人开始报数,每次报到3的时候,那个人退出圈子,然后继续从1开始报数,直到剩最后一个人。问,最后一个是最开始的第几个人?
代码:
int main(){
int n;
printf("输入人数\n");
scanf("%d",&n);
int a[1000];
int i;
int temp;
int count = 0;
temp = n;
for(i = 0;i < n;i++){
a[i] = i+1;
}
i = 0;
while(n > 1){
if(a[i] != 0){
count++;
}
if(count == 3){
a[i] = 0;
count = 0;
n--;
}
i++;
if(i == temp){
i = 0;
}
}
for(i = 0;i < temp;i++){
if(a[i] != 0){
printf("余下的为%d\n",a[i]);
}
}
return 0;
}
利用一个while循环并在里面进行if判断来完成题目要求