需要写个程序符合4条要求

输入一个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;
}

img

供参考:

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