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

相关文章
|
17天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
39 10
|
17天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
39 9
|
17天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
31 8
|
17天前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
40 6
|
17天前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
99 6
|
17天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
47 6
|
17天前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
26 5
|
14天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
20天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
7天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。