首页 > 其他分享 >分糖果

分糖果

时间:2023-04-27 19:46:02浏览次数:46  
标签:10 小孩 int 循环 judge 糖果

一、问题描述:

  10个小孩围成- -圈分糖果, 老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩:糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖块数一样多吗?每人各有多少块糖?

 

二、设计思路:

    题目有十个小孩,可以定义十个小孩的数组,然后思考循环的条件是什么,当每个孩子糖果数不相同时,就一直循环下去,所以我们可以采用while循环,题目又说每个小孩同时分一半给右边小孩,偶数还可以分,奇数则需要加1再分糖,这里我们还需要再建立一个数组来存储分一半后的数量,还有就是数组a[9]如何分一半给a[0]建立起一个圆圈般的循环然后就是判断循环是否继续的函数while(judge(a))此时函数的返回值决定。

 

三、程序流程图:

 

四、代码实现:

#include<stdio.h>
#define N 10
void print(int s[]);
int judge(int c[]);
int j=0;
int main()
{
    int a[N]={10,2,8,22,16,4,10,6,14,20};
    int b[10];
    int i,n;
    print(a);//输出没分之前每个孩子的糖果数量
    while(judge(a))
    {
        for(i=0;i<10;i++)
        {
            if(a[i]%2==0)
        
                b[i]=a[i]=a[i]/2;//偶数则之间分一半出去
        
            else b[i]=a[i]=(a[i]+1)/2;//奇数则加1后再分一半出去
        }
        for(n=0;n<9;n++)
        {
            a[n+1]=a[n+1]+b[n];
        }
            a[0]+=b[9];
            print(a);//输出当前每个孩子的糖果数
    }
    
    return 0;
}

int judge(int c[])
{
    int i;
    for(i=0;i<10;i++)
    {
        if(c[0]!=c[i])
        return 1;//不相同返回1
    }
        return 0;//相同返回0
    
}
void print(int s[])
{
    int k;
    printf("%d",j++);
    for(k=0;k<10;k++)
        printf("%4d",s[k]);
    printf("\n");
}

 说实话,这道题我写的时候没跑出来,天宇巨佬过来一看,

a[0]+=b[9] 
这个玩意我写进了for循环里面了,难受的捏,比五一,一个人过还难受

标签:10,小孩,int,循环,judge,糖果
From: https://www.cnblogs.com/bzsc/p/17360045.html

相关文章

  • 分糖果
     分析:定义长度为10的整型数组来存储每人的糖果,定义一个while循环,while循环的条件是每个孩子手中的糖果不同,在while循环中再定义一个for循环,这个for循环用来计算给其他孩子分糖果,再定义一个for循环,这个for循环用来加上分到的糖果,其中数组的0号位特殊处理,定义一个函数judge来判断......
  • 13.糖果问题
       代码1实现:#include<stdio.h>intjudge(intsw[]);//判断每个孩子的手中糖果是否一致voidprint(intc[]);//打印每个孩子手里的糖果数intj=0;//记录分配的次数intmain(intargc,constchar*argv[]){intsweet[10]={10,2,8,22,16,4,10,6,14,20};intt[10];pri......
  • 分糖果
    #include<stdio.h>intj=0;intjudge(intsweet[]){ inti; for(i=0;i<10;i++) { if(sweet[0]!=sweet[i])return1; } return0;}voidprint(intsweet[]){ intk; printf("%2d",j++); for(k=0;k<10;k++) pr......
  • 2.2分糖果
    1.10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家......
  • 分糖果
     一、问题描述   10个小孩围成一圈分糖果,老师分给第1个小孩10块糖,第2个小孩2块,第3个小孩8块,第4给小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩,糖块数为奇数的人可以向老师要......
  • 分糖果
     #include<iostream>usingnamespacestd;voidprint(ints[]);intjudge(intc[]);intj=0;intmain(){ intsweet[10]={10,2,8,22,16,4,10,6,14,20}; intt[10]; cout<<"child12345678910"<<endl; cout<&......
  • 分糖果
    自然语言解决问题:首先将每个小孩子定义,并将他们首次得到的糖果数量赋值给他们。该问题明显无法通过一次简单的传递就能结束,因此应用到循环结构。循环至所有小孩子的糖果都相同时输出次数以及所得糖果数量流程图: 具体代码:#include<bits/stdc++.h>usingnamespacestd;intj;i......
  • day 13 分糖果
    1.定义一个数组记录下每个人当前糖的个数;2.根据题设对糖的数目进行循环更新;3.当满足所以糖一致时结束;4.输出  后续代码实现过程中发现无需判断奇偶直接通过下式即可实现功能t[i+1]=(a[i]+1)/2;a[i]=(a[i]+1)/2;总代码如下:#include<iostream>usingnamespac......
  • 分糖果
    分糖果:10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次......
  • 糖果摄影师隐私政策
    糖果摄影师隐私政策 北京时间共舞科技有限公司是糖果摄影师的运营者(以下称“糖果摄影师”或“我们”),我们非常重视用户的隐私和个人信息保护。在使用我们的产品与/或服务时,可能会收集和使用您的相关信息。我们希望通过《糖果摄影师隐私政策》(“本隐私政策”)向您说明我们在您使用......