13【C语言 & 趣味算法】分糖果 问题。(数组名作为函数形参,亦即:形参数组名作 指针变量)

简介: 13【C语言 & 趣味算法】分糖果 问题。(数组名作为函数形参,亦即:形参数组名作 指针变量)

一、Review



12【c语言&趣味算法】存钱问题(四层for循环,if判断)

11【C语言&趣味算法】个人所得税问题(结构体应用)︰结构体的声明、定义结构体类型的三种方法等

10(可回看)【C语言&趣味算法】数制转换(常见,二进制、八进制、十进制、十六进制之间任意转换)

09【C语言&趣味算法】再识:折半查找(二分查找)︰基本思想、程序流程图及完整代码、附:顺序查找

08【C语言&趣味算法】再识:冒泡排序(问题分析、算法设计与分析、程序流程图以及完整代码)

07【C语言&趣味算法】最佳存款方案(采用从后往前递推解决)

06【c语言&趣味算法】牛顿迭代法求方程根(可回看)

05【C语言&趣味算法】经典:兔子产子问题(即:Fibonacci数列)

04【C语言&趣味算法】“抓交通肇事犯"问题。算法改进:设置"标识变量”,有效减少循环次数。03【C语言&趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

02【C语言&趣味算法】借书方案问题:小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

01【C语言&趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。


二、New problem: Sharing sweets(分糖果)



2.1 Description of the problem

8ad47ddc421d4c729822134ee7cd0f17.jpg


2.2Analysis of the problem

7ae25e243a6148aa80825913a6a921d3.jpg


2.3 Algorithm design

ab4091bc620e4b4db8edc60dcf8ddbba.jpg


2.4 Defining the framework of the process(确定程序框架)

7d302f36ac8b49ef81992d9bbf71426d.jpgcfb0bca8515948abbead4ec5e3e36208.jpg


2.5 Full code and output


//code by xiexu 
//趣味13:分糖果 问题  
#include<stdio.h>
void print(int s[]);
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          /*若为奇数则加1后再分出一半*/
        t[i]=sweet[i]=(sweet[i]+1)/2;
    for(l=0;l<9;l++)      /*将分出的一半糖给右(后)边的孩子*/
      sweet[l+1]=sweet[l+1]+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 1;  /*不相同返回1*/
  return 0;
}
/*输出数组中每个元素的值*/
void print(int s[])         
{
int k;
printf(" %2d ",j++);
for(k=0;k<10;k++) printf("%4d",s[k]);
printf("\n");
} 


The outpot:

可以知道,经过17次分糖后,每个小朋友手中都会有18块糖果~

dbcd860b8e094731ab47ef6732b2b223.jpg


2.6 Question expansion(问题拓展)。值得学习!~

dc5b97c505194a63b4763edb16cbecf3.jpg

相关文章
|
22天前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
34 1
|
23天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
125 67
|
20天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
73 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
20天前
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
44 9
|
20天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
40 7
|
21天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
22天前
|
存储 缓存 算法
C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力
本文探讨了C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力。文章还分析了数据结构的选择与优化、算法设计的优化策略、内存管理和代码优化技巧,并通过实际案例展示了C语言在排序和图遍历算法中的高效实现。
41 2
|
23天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
23天前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
75 3
|
24天前
|
存储 算法 程序员
C 语言指针详解 —— 内存操控的魔法棒
《C 语言指针详解》深入浅出地讲解了指针的概念、使用方法及其在内存操作中的重要作用,被誉为程序员手中的“内存操控魔法棒”。本书适合C语言初学者及希望深化理解指针机制的开发者阅读。
下一篇
DataWorks