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;
}
}
}
}
}