我爱编程C语言

7.29打卡

2018-07-29  本文已影响1人  今生何求惟你

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

程序:

#include <stdio.h>

#define nmax 50

main()

{

    int i,k,m,n,num[nmax],*p;

    printf("please input the total of numbers:");

    scanf("%d",&n);

    p=num;

    for(i=0;i<n;i++)

    *(p+i)=i+1;  //为数组num赋值

    i=0;

    k=0;

    m=0;

    while(m<n-1) //删除n-1个报数为3的人

    {

        if(*(p+i)!=0) k++;

        if(k==3)

        {

    *(p+i)=0;

            k=0;

            m++;

        }//令报数为3的人的值为空,并重置计数器k

        i++;

        if(i==n) i=0; // 当指针指向末尾时,使其重新指向开始

    }

    while(*p==0) p++;//跳过被排除的人

    printf("%d is left\n",*p);

}

7.29打卡
上一篇 下一篇

猜你喜欢

热点阅读