20140222

本文通过两个C语言程序示例介绍了如何使用循环解决约瑟夫环问题及倒水问题,展示了变量初始化、条件判断及循环控制的具体实现。
#include<stdio.h>
void main()
{
    int n, m, i, p, k, w[100];
    scanf("%d%d", &n, &m);
    for (i = 0; i < n; i++)
        w[i] = i + 1;
    i = 0;
    k = 1;
    p = 0;
    while (p < n - 1)
    {
        if (w[i] == -1)
        {
            i = (i + 1) % n;
            continue;
        }
        if (k == m)
        {
            w[i] = -1;
            p++;
            k = 0;
        }
        k++;
        i = (i + 1) % n;
    }
    for (i = 0; i < n;i++)
    if (w[i] != -1)
    {
        printf("%d\n", w[i]);
        break;
    }
}

while (!(a == R || b == R || c == R))
{
    if (!b)
    {
        a -= bv;
        b = bv;
    }
    else if (c == cv)
    {
        a += cv;
        c = 0;
    }
    else if (b > cv - c)
    {
        b -= cv - c;
        c = cv;
    }
    else
    {
        c += b;
        b = 0;
    }
    printf(a, b, c);
}

#include<stdio.h>
void main()
{
    int a, b, c, bv, cv, R, n;
    scanf("%d%d%d", &a, &bv, &cv);
    R = a / 2;//平分
    b = c = 0;
    n = 0;
    while (!(a == R || b == R || c == R))
    {
        if (!b)
        if (a < bv)
        {
            n = -1;
            break;
        }
        else//无法倒满b,则不能分
        {
            a -= bv;
            b = bv;
        }
        else if (c == cv)//c倒满a
        {
            a += cv;
            c = 0;
        }
        else if (b > cv - c)//b能倒满c
        {
            b -= cv - c;
            c = cv;
        }
        else//b不能倒满c
        {
            c += b;
            b = 0;
        }
        n++;
        printf("%d  %d  %d\n", a, b, c);
    }
    printf("%d\n", n);
}

 

转载于:https://www.cnblogs.com/yuanqi/p/3561201.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值