首页 > 编程语言 >打卡 c语言趣味编程 分糖果

打卡 c语言趣味编程 分糖果

时间:2023-05-16 21:13:28浏览次数:47  
标签:10 小孩 candies 编程 手中 int 打卡 糖果

问题描述:

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

思路:

  1. 创建一个长度为10的整数数组,表示每个小孩手中的糖果数量。
  2. 初始化数组的值,按照题目给出的分配方式,将糖果数量赋给对应的小孩。
  3. 使用一个循环,重复以下步骤直到所有小孩手中的糖果数量相同: a. 遍历数组,对每个小孩进行糖果的交换。将每个小孩手中的糖果数量减半,并将结果赋给当前小孩和下一个小孩。 b. 遍历数组,检查每个小孩手中的糖果数量是否为奇数,如果是奇数,则向老师要求一块糖果。将要求的糖果数量加到当前小孩的糖果数量上。 c. 检查所有小孩手中的糖果数量是否相同,如果相同则退出循环,否则继续下一轮交换。

流程图:

 

代码实现:

#include <iostream>

int main() {
    int candies[10]={10,2,8,22,16,4,10,6,14,20};
     // 保存每个小孩手中糖果的数量

    bool equal = false; // 所有小孩手中糖果数量是否相同的标志

    while (!equal) {
        // 糖果交换过程
        for (int i = 0; i < 10; i++) {
            int next = (i + 1) % 10;
            int halfCandies = candies[i] / 2;
            candies[i] -= halfCandies;
            candies[next] += halfCandies;
        }

        // 检查奇数糖果的情况并向老师要糖果
        for (int i = 0; i < 10; i++) {
            if (candies[i] % 2 != 0) {
                candies[i]++;
            }
        }

        // 检查所有小孩手中糖果数量是否相同
        equal = true;
        for (int i = 1; i < 10; i++) {
            if (candies[i] != candies[0]) {
                equal = false;
                break;
            }
        }
    }

    // 输出每个小孩手中糖果的数量
    for (int i = 0; i < 10; i++) {
        std::cout << "第" << (i + 1) << "个小孩手中有" << candies[i] << "块糖果" << std::endl;
}
     return 0;
}

 

标签:10,小孩,candies,编程,手中,int,打卡,糖果
From: https://www.cnblogs.com/qmz-znv2/p/17406803.html

相关文章

  • 建民打卡日记5.16
    一、问题描述对方不想和你说话,并向你扔了一串数……而你必须从这一串数字中找到“250”这个高大上的感人数字。二、流程设计在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。三、代码实现#include<iostream>usingn......
  • 5-15打卡-输入输出流
    #include<iostream>#include<iomanip>//包含格式输出所需的头文件usingnamespacestd;intmain(){//输入一个整数,以八进制形式输入intn;cout<<"请输入一个整数(八进制):";cin>>oct>>n;//以八进制读入整数n//分别以十进制和十六进制显......
  • 5月16日打卡
    习题4-10设计一个用于人事管理的“人员”类。由于考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号、性别、出生日期、身份证号等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、复制构造函数、内......
  • 5-16打卡-输入输出流
    #include<iostream>#include<fstream>//包含文件操作所需的头文件#include<iomanip>//包含格式输出所需的头文件usingnamespacestd;intmain(){charfilename[20];//定义一个字符数组存储文件名cout<<"请输入OFF文件的名称:"<<endl;cin>&g......
  • 每日打卡-25
    一.问题描述  线性代数中的矩阵可以表示为一个row*column的二维数组,当row和column均为1时,退化为一个数,当row为1时,为一个行向量,当column为1时,为一个列向量。  建立一个整数矩阵类matrix,其私有数据成员如下:introw;intcolumn;int**mat;   建立该整数矩阵类matrix构造......
  • 天天打卡
    “教育超市”是拼题A系统的一个衍生产品,发布了各种试卷和练习供用户选购。在试卷列表中,系统不仅列出了每份试卷的单价,还显示了当前的购买人次。本题就请你根据这些信息找出教育超市所有试卷中的销量(即购买人次)冠军和销售额冠军。输入格式:输入首先在第一行中给出一个......
  • 打卡17
    packageorg.example;importjava.sql.SQLOutput;importjava.util.*;//������Shift�......
  • 第二十一天打卡
    一、问题描述将5元的人民币兑换成1元、5角和1角的硬币,共有多少种不同的兑换方法。二、设计思路设变量x、y和z分别代表兑换的1元、5角和1角的硬币所具有的钱数(角),则由题目的要求,可得到方程:x+y+z=50其中,x为兑换的1元硬币钱数,其可能的取值为{0,10,20,30,40,50},y为兑换的5角硬币钱......
  • 5.16打卡
    一、问题描述:本节要研究孪生素数的问题,先来看看什么是孪生素数。所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经近的不能再近了,如同李生兄弟一样,所以将这一对素数称为孪生素数。显然,最小的一对孪生素数是(1,3)。我们可以写出3~100以内的孪生素数,一共有8对,分别是(3......
  • c++打卡第二十八天
    一、以圆类Circle及立体图形类Solid为基础设计圆柱类Cylinder1、题目描述以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆柱类Cylinder,main(void)函数完成对圆柱类Cylinder的测试。Point类结构说明:Point类的数据成员......