【C语言】报3退圈

(1)用字母初始化:

#include <stdio.h>

void print(char *a,int n);//打印显示
void display(char *a,int n);//报3退圈

int main() 
{
    int n,i;
    printf("请输入参与游戏的人数:");
    scanf("%d",&n);

    char a[n];//赋值A、B、C...
    for(i=0;i<n;i++)
    {
        a[i]='A'+i;
            
    }
    char *p=a;
    printf("参加游戏的选手:\n");
    print(p,n);
    printf("\n");

    display(p,n);

    printf("最后留下的人是:");
    print(p,n);
    return 0;
}
void display(char *a,int n)
{
    int i=1;        //编号
    int count=n;    //当count=1时得结果
    int flag=0;     //循环报数

    while(count>1)
    {
        if(flag==n) 
            {
                flag=0;
               }
        if(a[flag]!='*') 
            {
                if(i==3) 
                {
                    a[flag]='*';
                    i=0;
                    count--;
                }
                i++;
            }
        flag++;
    }
}

void print(char *a,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(a[i]!='*')
        {
            printf("a[%d]=%c ",i,a[i]);
            printf("\n");
        }
    }
}

注:用‘*‘代表已经退圈的人

第一轮:ABC     C报3,C退圈,C=0

第二轮:DAB     B报3,B退圈,B=0

第三轮:DAD     D报3,D退圈,D=0

 

(2)用数字初始化

#include <stdio.h>

void print(int *a,int n);//打印显示
void display(int *a,int n);//报3退圈

int main() 
{
    int n,i;
    printf("请输入参与游戏的人数:");
    scanf("%d",&n);               
    int a[n];//赋值A、B、C...
    for(i=0;i<n;i++)
    {
        a[i]=1;                                           
    }
    int *p=a;
    display(p,n);
    printf("最后留下的人序号是:");
    print(p,n);
    return 0;
}
void display(int *a,int n)
{
    int i=1;        //编号
    int count=n;    //当count=1时得结果
    int flag=0;     //循环报数
    while(count>1)
    {
        if(flag==n) 
        {
            flag=0;
        }
        if(a[flag]) 
        {
            if(i==3) 
            {
                a[flag]=0;
                i=0;
                count--;
            }
            i++;
        }
        flag++;
    }
}

void print(int *a,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(a[i])
        {
            printf("%d\n",i);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42417182/article/details/84980845