示例1:顺序和逆序依次输出数组中的元素
示例2:求数组的和和平均值
示例3:求数组的最大值和最小值
示例4:求方差和标准偏差
示例5:计算二维数组相加生成另外一个二维数组
示例6:交换数组的行与列
最后附上完整源码。
下面就是实现代码:
示例1:顺序和逆序依次输出数组中的元素
首先在main函数外部定义一个常量,代表数组长度;
//切记一定不能在结尾带分号,否则会报错
#define LEN 5
然后在main函数中声明一个数组,这三个示例使用同一个数组就行;
int array1[LEN] = {1,2,3,0,-1};
接下来使用for循环来实现顺序输出数组中的每一个元素:
printf("示例1:正序或者逆序依次输出数组中的元素\n");
for(int i = 0; i < LEN; i++)
{
printf("正序,输出数组第%d个元素:%d\n",i,array1[i]);
}
接下来使用for循环来实现逆序输出数组中的每一个元素:
printf("\n");
for(int j = LEN; j >= 0; j--)
{
printf("逆序,输出数组第%d个元素:%d\n",j,array1[j]);
}
自己运行后,查看一下效果吧,这里就不截图了。
示例2:求数组的和和平均值
声明两个变量,用来存放和/平均值;
int sum = 0;//和
float ave = 0.0;//平均值
使用for循环遍历数组:
printf("示例2:求数组的和以及平均值\n");
for(int i = 0; i < LEN; i++)
{
sum += array1[i];
}
ave = (float)sum / LEN;
printf("数组的和为:%d",sum);
printf("数组的平均值为:%.2f",ave);
自己运行后,查看一下效果吧,这里就不截图了。
示例3:求数组的最大值和最小值
声明两个变量表示最大值和最小值;
int max,min;//最大值和最小值
接下来就是最关键的一步,指定数组中第一个元素暂时为最大值和最小值,根据第一个元素就可以遍历整个数组,依次与这个值进行比较。
printf("示例3:求数组的最大值和最小值\n");
max = array1[0];//默认数组的最大值和最小值均为数组的第一个元素
min = array1[0];
for(int i = 0; i < LEN; i++)
{
if( max < array1[i])
{
max = array1[i];
}
if(min > array1[i])
{
min = array1[i];
}
}
printf("数组的最大值为:%d,数组的最小值为:%d",max,min);
自己运行后,查看一下效果。
示例4:求方差和标准偏差
声明一个函数,用来实现方差和标准偏差的计算。
float calculateSD(int arr[],float ave);
如果不知道方差公式的,可以自行百度https://baike.baidu.com/item/%E6%96%B9%E5%B7%AE%E5%85%AC%E5%BC%8F/3638551
不想百度的,可以看下图:
下面就是函数实现:
float calculateSD(int arr[],float ave)
{
printf("%.f\n",ave); /* 输出平均值 */
float s = 0.0; /* 方差 */
float total = 0.0; /* 平方和 */
float SD = 0.0; /* 标准偏差 */
for(int i = 0;i < LEN; i++)
{
total += pow(arr[i] - ave,2);
printf("%d\n",arr[i]); /* 输出每一项 */
}
s = (float) total / LEN; /* 方差 */
printf("方差为:%.2f\n",s);
SD = (float)sqrt(s); /* 标准偏差 */
printf("标准偏差为:%.2f\n",SD);
return s;
}
下面附上完整代码:
#include
/* 需要用到数学公式,所以添加头文件 */
#include
//定义常量,数组长度
#define LEN 5
//计算方差
float calculateSD(int arr[],float ave);
int main()
{
int array1[LEN] = {1,2,3,0,-1};
int sum = 0;//和
float ave = 0.0;//平均值
int max,min;//最大值和最小值
printf("示例1:正序或者逆序依次输出数组中的元素\n");
for(int i = 0; i < LEN; i++)
{
printf("正序,输出数组第%d个元素:%d\n",i,array1[i]);
}
printf("\n");
for(int j = LEN; j >= 0; j--)
{
printf("逆序,输出数组第%d个元素:%d\n",j,array1[j]);
}
printf("***********************************************\n");
printf("示例2:求数组的和以及平均值\n");
for(int i = 0; i < LEN; i++)
{
sum += array1[i];
}
ave = (float)sum / LEN;
printf("数组的和为:%d",sum);
printf("数组的平均值为:%.2f",ave);
printf("***********************************************\n");
printf("示例3:求数组的最大值和最小值\n");
max = array1[0];//默认数组的最大值和最小值均为数组的第一个元素
min = array1[0];
for(int i = 0; i < LEN; i++)
{
if( max < array1[i])
{
max = array1[i];
}
if(min > array1[i])
{
min = array1[i];
}
}
printf("数组的最大值为:%d,数组的最小值为:%d",max,min);
printf("示例4:数学中的方差计算\n");
calculateSD(arr,ave);
return 0;
}
//函数实现
float calculateSD(int arr[],float ave)
{
printf("%.f\n",ave); /* 输出平均值 */
float s = 0.0; /* 方差 */
float total = 0.0; /* 平方和 */
float SD = 0.0; /* 标准偏差 */
for(int i = 0;i < LEN; i++)
{
total += pow(arr[i] - ave,2);
printf("%d\n",arr[i]); /* 输出每一项 */
}
s = (float) total / LEN; /* 方差 */
printf("方差为:%.2f\n",s);
SD = (float)sqrt(s); /* 标准偏差 */
printf("标准偏差为:%.2f\n",SD);
return s;
}
真实可运行,结果也是正确的。
示例5:计算二维数组相加生成另外一个二维数组
首先声明两个变量表示行数和列数
int r = 2, c = 3; /* r:行数,c:列数 */
然后声明三个数组,2个是已知数组,这两个二位数组用来相加,一个是用来保存结果的数组
int a[2][3] = {{1,2,3},{2,2,3}}, b[2][3] = {{1,2,3},{1,2,3}}, sum[2][3];
依次输出数组中的元素
for(int i = 0; i < r; ++i)
{
for(int j = 0; j< c; ++j)
{
//依次输出各数组中的元素,
printf("a[%d][%d]:%d\n",i,j,a[i][j]);
printf("\n");
printf("b[%d][%d]:%d\n",i,j,b[i][j]);
}
}
开始计算两个二维数组相加操作:
printf("计算二维数组相加:\n");
for(int i = 0; i < r; ++i)
{
for(int j = 0; j < c; ++j)
{
sum[i][j] = a[i][j] + b[i][j]; /* */
}
}
显示相加的结果:
// 显示结果
printf("\n二维数组相加结果: \n\n");
for(int i = 0; i < r; ++i)
{
for(int j = 0; j < c; ++j)
{
printf("%d ",sum[i][j]);
//换行
if(j == c - 1)
{
printf("\n\n");
}
}
}
示例6:交换数组的行与列
声明一个数组,用来存放交换后的数组
int Reverse[3][2] ;
交换时,行变成列,列变成行:
//交换,列变成行,行变成列
for(int i = 0; i < r; ++i)
{
for(int j = 0; j < c; ++j)
{
Reverse[j][i] = sum[i][j];
}
}
显示交换后的结果:
//结果,列数变成行数,行数变成列数
for(int i = 0; i < c; ++i)
{
for(int j = 0; j < r; ++j)
{
printf("%d ", Reverse[i][j]);
//换行
if(j == r - 1)
{
printf("\n\n");
}
}
}
相加的结果:
交换的结果:
最后附上完整代码,亲测可运行,结果正确!
#include
int main()
{
printf("示例1:计算二维数组相加生成另外一个二维数组\n");
int r = 2, c = 3; /* r:行数,c:列数 */
int a[2][3] = {{1,2,3},{2,2,3}}, b[2][3] = {{1,2,3},{1,2,3}}, sum[2][3];
for(int i = 0; i < r; ++i)
{
for(int j = 0; j< c; ++j)
{
//依次输出各数组中的元素,
printf("a[%d][%d]:%d\n",i,j,a[i][j]);
printf("b[%d][%d]:%d\n",i,j,b[i][j]);
}
}
printf("计算二维数组相加:\n");
for(int i = 0; i < r; ++i)
{
for(int j = 0; j < c; ++j)
{
sum[i][j] = a[i][j] + b[i][j]; /* */
}
}
// 显示结果
printf("\n二维数组相加结果: \n\n");
for(int i = 0; i < r; ++i)
{
for(int j = 0; j < c; ++j)
{
printf("%d ",sum[i][j]);
//换行
if(j == c - 1)
{
printf("\n\n");
}
}
}
printf("示例2:交换数组的行与列\n");
int Reverse[3][2] ;
//交换,列变成行,行变成列
for(int i = 0; i < r; ++i)
{
for(int j = 0; j < c; ++j)
{
Reverse[j][i] = sum[i][j];
}
}
//结果,列数变成行数,行数变成列数
for(int i = 0; i < c; ++i)
{
for(int j = 0; j < r; ++j)
{
printf("%d ", Reverse[i][j]);
//换行
if(j == r - 1)
{
printf("\n\n");
}
}
}
return 0;
}