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

本文分享了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; 
				}	
			}
		}
	}
}

### Java 实现求数组的和、平均数、最大值最小值 在Java中,可以利用循环遍历数组来计算其元素之和、找到其中的最大值最小值,并进一步通过这些数据得出平均值。下面是一个具体的例子说明这一过程[^1]。 ```java public class ArrayStats { public static void main(String args[]) { // 随机生成10个介于10至99之间的整数值并存入数组 int[] numbers = new int[10]; for (int i = 0; i < numbers.length; ++i) { numbers[i] = (int)(Math.random() * (99 - 10 + 1)) + 10; } // 初始化变量用于存储总和、最大值最小值 double sum = 0; int maximum = Integer.MIN_VALUE; int minimum = Integer.MAX_VALUE; // 计算总和的同时寻找最大值最小值 for (int num : numbers) { sum += num; if (num > maximum) { maximum = num; } if (num < minimum) { minimum = num; } } // 输出结果 System.out.printf("The array elements are: %s%n", java.util.Arrays.toString(numbers)); System.out.printf("Sum of all elements is %.2f.%n", sum); System.out.printf("Average value is %.2f.%n", sum / numbers.length); System.out.printf("Maximum element is %d and Minimum element is %d.%n", maximum, minimum); } } ``` 上述代码片段展示了如何创建一个包含随机整数的数组,并对其进行分析以获得所需的统计信息。这里使用了`Integer.MIN_VALUE` 和 `Integer.MAX_VALUE` 来初始化最大值最小值变量,从而确保任何实际存在的数组成员都能更新这两个初始极端值。此外,在计算平均值得时候采用了浮点除法(`sum / numbers.length`)以便更精确地表示可能不是整数的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值