| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2654 人关注过本帖
标题:用c语言编写分糖果问题!
只看楼主 加入收藏
少年锦时
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-4-23
结帖率:0
收藏
 问题点数:0 回复次数:4 
用c语言编写分糖果问题!
10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6,14,20。然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。

学的还比较少,希望大家回复的时候可以尽量易懂!

(结帖)

[此贴子已经被作者于2017-5-7 10:03编辑过]

搜索更多相关主题的帖子: c语言 
2017-05-06 16:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
这题代入规则运算就可以了~先把奇数的变成偶数的~然后再全部除以2~再把该数据分别相加到相邻的同学上(注意中间要用一个临时变量保存划分数据)~然后重复相同的步骤记录其调整次数就可以了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-06 19:36
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
收藏
得分:0 
程序代码:
#include <stdio.h>

int main(void)
{
    int Children[10] = { 12,2,8,22,16,4,10,6,14,20 };
    int tmp[10];
    for (int n=1;;n++)
    {
        for (int i = 0; i < 10; i++)
        {
            tmp[i] = Children[i] / 2;            //把每人手中的糖减去一半,并存放到tmp数组待用
            Children[i] = tmp[i];                
        }
        for (int j = 0; j < 10; j++)           //把糖分给右边的人
        {
            if (j == 0)
                Children[j] += tmp[9];
            else
                Children[j] += tmp[j - 1];
        }
        for (int k = 0; k < 10; k++)            //手上糖为单数的,+1成双数
            if (Children[k] % 2 == 1)
                Children[k] += 1;
        for (int y = 0; y < 10; y++)
            printf("%d ",Children[y]);
        printf("\n");
        for (int x = 0; x < 10; x++)
        {
            if (Children[0] != Children[x])        //对比每人手中糖果数,有不同则跳出循环从头继续
                break;
            if (x == 9)      //经过10次对比相同,则输出并结束程序
            {
                printf("经过 %d 次调整后,大家的糖块一样多,且每人 %d 块。\n", n, Children[0]);
                return 0;
            }
        }
    }

    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册

2017-05-07 00:05
少年锦时
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-4-23
收藏
得分:0 
谢谢大家!
2017-05-07 10:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9030
专家分:54050
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdbool.h>

bool foo( unsigned a[10], unsigned b[10] )
{
    bool bchanged = false;
    for( size_t i=0; i!=10; ++i )
    {
        b[i] = (a[(i+9)%10]/2 + a[i]/2 + 1)/2*2;
        bchanged = a[i]==b[i]?bchanged:true;
    }
    return bchanged;
}

int main( void )
{
    unsigned buf[2][10] = { 12,2,8,22,16,4,10,6,14,20 };
    unsigned count = 0;

    for( ; foo(buf[count%2],buf[(count+1)%2]); ++count )
    {
        //printf( "count=%-3u ", count+1 );
        //for( size_t i=0; i!=10; ++i )
        //    printf( "%3u%c", buf[(count+1)%2][i], " \n"[i+1==10] );
    }

    printf( "count=%u, number=%u\n", count, buf[0][0] );

    return 0;
}
2017-05-08 09:37
快速回复:用c语言编写分糖果问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015014 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved