数组的求和、平均值、最大值、最小值、排序

本文分享了STM32中一维数组的初始化方法,以及如何进行求和、平均数计算、找出最大值和最小值,以及数组从小到大排序的过程。适合初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        STM32学习中,总结关于数组计算的学习心得,请各位大佬不吝指教,也希望能够帮助到和我一样的初学者

一、一维数组的初始化

数据类型 数组名[数组内数据个数]={数组内各数据}    注: [ ]内必须是常量,不能是变量   

 示例:

int arr[3]={2,5,8} 表示一个名为arr的整型数组,其中有三个数值为2,5,8的数 

int arr[]={2,5,8}  也表示一个名为arr的整型数组,其中有三个数值为2,5,8的数

int arr[3]={2,5}  表示一个名为arr的整型数组,其中有三个数值为2,5,0的数(不足的部分补0)

           

 二、一维数组的计算代码如下:

#include "stm32f10x.h"                  // Device header

int main(void)
{
	/*定义变量名*/
	int arr[5] = {18,112,7,6,115,};    //定义一维数组
	int sum;                           //定义求和变量
	float ave;                         //定义平均数变量(平均数会是小数,所以定义为浮点数)
	int max;                           //定义最大值变量
	int min;                           //定义最小值变量
	int temp;                          //定义比较交换中转变量
	
    while(1)
    {		

		/**求和,平均数
          *先给sum赋值0
		  *依次将sum与数组各数相加并赋值到sum
		  *将求和的值sum除以个数得平均数
        */
		sum = 0;                                
		for (int i = 0; i < 5; i++)
		{
			sum += arr[i];
		}	        
		ave = (float) sum /5;
			
		/**求最大值,最小值
		  *先假设数组第一个数(arr[0])为最大值(max)或最小值(min)
		  *再依次与数组内各数做比较,并将大于max的赋值到max或小于min的赋值到min
          *数组第一个数已经假设为最大/小值,因此从第二个数开始比较,for循环从i=1开始
        */
		max = arr[0];                           
		min = arr[0];     
        /*求最大值*/                      
		for (int i = 1; i < 5; i++)         
		{
			if (max < arr[i])
			{
				max = arr[i];
			}	
		}
        /*求最小值*/ 
		for (int i = 1; i < 5; i++)
		{
			if (min > arr[i])
			{
				min = arr[i];
			}	
		}

			
		/**从小到大排序
	   	  *用第一个数与后一个数做比较,如果大于后一个数则交换位置
          *比较N-1次后最大的数被放在了数组最后位置
		  *再次做比较交换,比较N-2次(最大的数已经在数组最后位置,不用再次比较)后
          *第二大的数会被放在数组倒数第二的位置
		  *依次类推执行(数组个数-1)次循环比较后完成排序
          *从大到小的排序 做小于比较
        */
		for (int i = 0; i < 5-1; i++)
		{
			for (int j = 0; j < 5-i-1; j++)
			{
				if (arr [j] > arr [j+1])
				{
					temp = arr [j];
					arr [j] = arr [j+1];
					arr [j+1] = temp; 
				}	
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值