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