首页 > 其他分享 >分糖果

分糖果

时间:2023-05-04 20:47:27浏览次数:30  
标签:10 小孩 int sweet 糖块 糖果

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

二、问题分析:
根据题意,10个小孩开始时所拥有的糖果数是不同的,但分糖的动作却是相同的,即“所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块”。因此,这是一个典型的可使用循环结构来解决的问题。

老师开始给每个小孩分配的糖果数作为循环的初始条件,“所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。”这个重复的动作作为循环体循环的结束条件为所有小孩手中的糖块数一样多。在循环体中,还需要判断糖块数的奇偶性,奇偶性不同,完成的操作也不相同,显然这需要使用一个选择结构来实现。

三、程序流程图:

 

四、代码实现

#include<stdio.h>
void print(int a[]);
int judge(int c[]);
int j=0;
int main()
{
    int sweet[10]={10,2,8,22,16,4,10,6,14,20};
    int i,t[10],l;
    printf("Child 1  2  3  4  5  6  7  8  9  10\n");
    printf("................\n");
    printf("time\n");
    print(sweet);
    while(judge(sweet))
    {
        for(i=0;i<10;i++)
            if(sweet[i]%2==0)
            t[i]=sweet[i]=sweet[i]/2;
        else
            t[i]=sweet[i]=(sweet[i]+1)/2;
        for(l=0;l<9;l++)
            sweet[l+1]=sweet[l+l]+t[l];
        sweet[0]+=t[9];
        print(sweet);
    }
}
int judge(int c[])
{
    int i;
    for(i=0;i<10;i++)
        if(c[0]!=c[i])
    return 0;
}
void print(int s[])
{
    int k;
    printf(" %2d ",j++);
    for(k=0;k<10;k++)
        printf("%4d",s[k]);
    printf("\n");
}

 

标签:10,小孩,int,sweet,糖块,糖果
From: https://www.cnblogs.com/jais/p/17372437.html

相关文章

  • AcWing 4086 分糖果
    关于这道题我当时大意了https://www.acwing.com/problem/content/description/4089/关于我的某个变量没有初始化这件事,唯一想法,敲死得了,谁懂?其实就是一道简简单单的数学分析题,和大佬们不一样,萌新只会简简单单的小学数学(本人初二!)分析走起! 一道典型的数学问题() 虽然我WA了,......
  • 分糖果
    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块。然后所有的小孩同时将手中的糖分一半给右边的小孩:糖块数为奇数的人可向老师要一块......
  • 分糖果
     分析:定义长度为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......