Linux学习之C语言编程练习1

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

提示:用数组完成

1231231231
          
23 12 31 2
          
3  12  3 1
   23    1
   2     3
   1      

围成一个圈报数 报到3的退出,假设10个人 我用表格的形式描述了一下题目的意思(表格s形来读

用数组来完成这题,我们首先需要让这10个数进入数组,让数组中值等于3 的数为0,下面是具体的编程:

#include <stdio.h>
int func(int n)
{
    int group[1000];
    int i,nn,sum = 0;
    nn = n;


    for(i = 0;i < n;i++)
        group[i] = i + 1;      //让n
个人进数组

    for(i = 0;;i++)
    {
        if(i == n)                //一轮循环结束后让i重新为0
            i=0;
        if(group[i] != 0)      
            sum ++ ; 
        else 
            continue;
        if(sum % 3 == 0) //1 2 3 当报数到3时给这个元素赋值为0
        {
            group[i] = 0;
            nn--;                // 总数减一
        }
        if(nn == 1)        //当总数为一时退出
            break;
    }
for(i = 0;i < n;i++)     //所有报数为3 的元素都被置为0 了现在打印出不为0的数也就是剩下的那个值
{
    if(group[i] != 0)
        return group[i];
}




}
int main()
{
    int n;
    int func(int n);


    printf("please enter the number:\n");
    scanf("%d",&n);
    printf("the number left is :%d\n",func(n));


    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值