有n个人围成一圈,循序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号人。

来源:互联网 发布:压缩比最高的软件 编辑:程序博客网 时间:2024/06/05 00:29

C语言编程题:有n个人围成一圈,循序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号人。

#include <stdio.h>#include <stdlib.h>int main(){    int arr[100];    int i,n,num,time;    int *p=arr;    printf("please input the number of students:");    scanf("%d",&n);    for(i=0;i<n;i++)        arr[i]=i+1;    p=arr;    num=n;    i=1;    time=1;    while(num!=1)    {        if(time%n==0)        /*完成一次从第一位到最后一位的循环,指针p回到数组第一个元素*/            p=arr;        if(i%3==0&&i!=0)     /*若不加&&i!=0,第一次为i赋0后就会无限循环下去*/            {            i=0;            *p=0;            /*报到3的人赋值0,再在总人数num中减去这个人,直到只剩1人,解锁循环*/            num--;            }        i++;        p++;        time++;    }    while(*p==0)        p++;    printf("The last one is No.%d",*p);    return 0;}
阅读全文
0 0