(一)c语言百题趣味题之–分糖问题

前言:

在学习C语言的道路上坎坷而又曲折,怎样提高自己的编程水平,答案很简单:多练。学习没有捷径可严,努力才是真理。接下来给大家带来c语言百题趣味题系列。


问题描述:

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


解析:

看到问题先别被吓到,题目虽然很长,看起来好像很复杂,但是把主干抓住就可以迎刃而解。

  1. 问题对象:有十个小孩,每人的糖数不同,那么我们完全可以用数组去将这十个值储存起来
  2. 如何操作:将自己手中的一半的糖分给右边,糖块数为奇数的人可向老师要一块,显然我们可以遍历数组将自身的糖减去一半(或者除一半),用另一个的数组保存下来,让这新的数组相邻相加所获得的值更新原来的数组就完成了。
  3. 什么时候停止交换:当所有人都相同时候,可以写一个判断数组的方法
  4. 最后:将每次变化后的数组输出出来

代码:

  1. 十个小孩十个值,声明数组并附初始值,声明另一个数组保存各个小孩手中一半的糖数
 int a[10] = {10,2,8,22,16,4,10,6,14,20};int sweet[10];
  1. 将自己手中的一半的糖数用新数组保存下来,糖块数为奇数的人可向老师要一块
for (int i = 0; i < 10; i++){if (a[i] % 2 == 0)sweet[i] = a[i] / 2;elsesweet[i] = (a[i] + 1) / 2;}
  1. 将自己手中的一半的糖分给右边,当i=9时,i+1会越界,所以(i+1)%10让他循环回零
 for (int i = 0; i < 10; i++)a[(i+1)%10] = sweet[(i + 1) % 10] + sweet[i];
  1. 判断数组每一项都相等,如果全相等返回0(停止循环),不相等返回1(继续循环)
int judge(int a[])
{for (int i = 1; i < 10; i++){if (a[0]!=a[i]) {return 1;}}return 0;
}
  1. 将数组的值输出出来
void put(int a[])
{printf("第 %d 次  ", ++j);for (int i = 0; i < 10; i++){printf("%d  ", a[i]);}printf("\n");
}

全代码:

#include<stdio.h>
int j = 0;
int judge(int a[])
{for (int i = 1; i < 10; i++){if (a[0]!=a[i]) {return 1;}}return 0;
}
void put(int a[])
{printf("第 %d 次  ", ++j);for (int i = 0; i < 10; i++){printf("%d  ", a[i]);}printf("\n");
}
int main()
{int a[10] = {10,2,8,22,16,4,10,6,14,20};int sweet[10];while (judge(a)){put(a);for (int i = 0; i < 10; i++){if (a[i] % 2 == 0)sweet[i] = a[i] / 2;elsesweet[i] = (a[i] + 1) / 2;}for (int i = 0; i < 10; i++)a[(i+1)%10] = sweet[(i + 1) % 10] + sweet[i];}getchar();return 0;
}

结果:


2019年7月24号

(一)c语言百题趣味题之--分糖问题相关推荐

  1. 【C语言练习】趣味题 疏散

    疏散 银河系第五司令部建造了一艘总之就是非常帅气的名为CJLU号的飞船用来疏散平民,同时分发了 N 张船票.如果船票上的标记包含有CJLU,那么就说明这是张有效船票.你作为验票员,需要告知司令部这 N ...

  2. C语言:上机编程题集

    目录 一.字符串相关问题 二.数学相关问题 三.结构体相关问题 四.链表相关问题 五.文件的输入输出相关问题 六.数据结构 七.番外篇 八.附加资料 一.字符串相关问题 输入一行字符,分别统计出其中英 ...

  3. c语言百题大战之求n的阶乘,网易大神第五人格百题大战题库下载-第五人格百题大战答案完整版下载v1.52.7_86PS软件园...

    网易大神第五人格百题大战题库答案完整版是款非常实用的辅助工具.在这款工具中将会为玩家们带来最新最准确的答案供玩家们完成所有的问题.在第五人格百题大战题库中玩家们只需要找到对应的题目就可以找到自己想要的 ...

  4. 从CSDN的趣味题学PYTHON

    2019独角兽企业重金招聘Python工程师标准>>> 转自:http://www.cnblogs.com/chagel/archive/2009/02/01/1381820.htm ...

  5. 2017c语言预测,2017计算机二级C语言上机最终预测题

    2017计算机二级C语言上机最终预测题 2017年上半年计算机二级考试即将到来,为了帮助大家备考,百分网小编整理了计算机二级C语言上机最终预测题,希望帮助大家顺利通过计算机二级考试. 填空题 请补充f ...

  6. JAVA趣味题(答案下页慢慢答)

    Java趣味题 1.有50层的楼往下扔小球,已知小球某一层坠落会碎,请问你需要多少次可以找到该层楼,用java代码实现该楼层 2.给你一组字符串,如:dAiEq145ewo2Qp4,轻你编写输出里面的 ...

  7. 山西专升本C语言编程题真题

    山西专升本C语言编程题真题 2010年 2011年 2012年 2013年 2014年 2015年 2016年 2017年 2018年 2019年 2020年 所有代码为博主本人思路,并非标准答案,仅 ...

  8. python趣味题_从CSDN的趣味题学PYTHON

    转自:http://www.cnblogs.com/chagel/archive/2009/02/01/1381820.html 本文给出两道趣味题的Python解法 题目1:要求算一任意长度字符串中 ...

  9. C语言必考100题,C语言必考100题.doc

    C语言必考100题 按下述格式,从键盘输入一个整数加法表达式:操作数1+操作数2,然后计算并输出表达式的计算结果,形式如下:操作数1+操作数2=计算结果. 输入两个整形数并打印,如果用户不慎输入了非法 ...

最新文章

  1. 复旦副教授魏忠钰:AI和人类对垒「奇葩说」,如何打造智能辩手?
  2. java 易变变量_提高java编程质量 - (一)易变业务使用脚本语言编写
  3. 从安全测试开始:与杰夫•佩恩的一场面谈(译)
  4. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——1.5 安装SMO
  5. 单单表单独占一行_数据透视表→Alt+D+P?
  6. sudo apt update提示某个源超时
  7. ubuntu16 黑主题_给Ubuntu 8.10安装超炫酷黑色新主题
  8. java处理xls_Java处理Excel文件
  9. 京东金融移动安全体系
  10. dw中创建java程序_新建MainGame.java并创建窗口
  11. postSQL使用存储过程动态查询
  12. ARMA 模型的参数估计 —— 增广最小二乘法
  13. python渗透测试神器_专题:网络安全工具百宝箱之渗透测试神器_51CTO.COM
  14. Squid 代理服务之反向代理服务器架构搭建
  15. 从零到一构建CI/CD的DevOps自动化流水线,需要考虑的开源项目
  16. SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022)
  17. ios 获取电量百分比_iOS 获取电池电量
  18. 名悦集团:跟车行驶如何避免出现汽车追尾事故
  19. 国人之光-分布式存储框架FastDFS入门篇
  20. MAC IP地址扫描监控

热门文章

  1. 保护你的文件夹和文件
  2. RAID配置教程详解(6) -RAID-1磁盘镜像卷
  3. SSPI方式配置Lattice ECP3系列FPGA
  4. 【MFAC】基于偏格式动态线性化的无模型自适应控制
  5. 常见的地磁传感器是怎么工作的
  6. 3.sparksql:函数使用:实现累加和累乘
  7. H5游戏开发:一笔画
  8. 什么是steam账号红信,如何避免steam账号红信,如何提升选品和消耗速度
  9. 如何选择IIOT数据采集解决方案:公有或私有?
  10. 计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe