输入一个3行3列的矩阵(数据类型不限,整型或浮点型均可),编写函数对矩阵按列求均值,保存在一个一维数组中,在主函数中输出该一维数组
a. 举例:
假设3行3列的矩阵为
1 2 3
4 5 6
7 8 9
则输出结果为4.00 5.00 6.00(保留两位小数)
b. 说明:
i. 程序中包含主函数main()和子函数,子函数的功能是对矩阵按列求均值
ii. 在主函数中定义二维数组和一维数组,二维数组中元素的赋值(从键盘输入)是在主函数中实现
iii. 将二维数组和一维数组作为子函数参数,参数传递方式为地址传递,在子函数中使用嵌套两重循环计算一维数组中每个元素的值;子函数的返回值为void类型
iv. 在主函数中输出一维数组中每个元素的值,保留两位小数
#include <stdio.h>
void f(double a[3][3],double ans[3])
{
int i = 0,j = 0;
for(i = 0; i < 3; ++i)
{
for(j = 0; j < 3; ++j)
{
ans[i] += a[j][i];
}
}
for(i = 0; i < 3; ++i) ans[i] /= 3;
}
int main()
{
double a[3][3];
double ans[3] = {0};
int i = 0,j = 0;
for(i = 0; i < 3; ++i)
{
for(j = 0; j < 3; ++j)
{
scanf("%lf",&a[i][j]);
}
}
f(a,ans);
for(i = 0; i < 3; ++i) printf("%.2lf ",ans[i]);
return 0;
}
供参考:
#include <stdio.h>
#define N 3
void func(int *a,float *b,int n)
{
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
*(b+i) += *(a + i + j * n);
}
*(b+i)/=n;
}
}
int main()
{
int a[N][N]={0},i,j;
float b[N]={0};
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
func(a[0],b,N);
for(i=0;i<N;i++)
printf("%5.2f",b[i]);
return 0;
}