输入一个二维整型数组a[4][3],用三种方法输出二维数组中所有元素的平均值、最大元素、最小元素

这是在VC6.0做的,希望解答的能在这软件运行一下

三种方法 函数原型:
double funAverage(int *p, int n)
int funMax(int p[][3], int n)
int funMin(int (*p)[3], int n)

1、打开matlab,在命令行窗口中输入a=[12 24 35;26 78 56],创建一个2行3列的矩阵。

2、在命令行窗口中输入mean(a(:)),求a矩阵所有元素的平均值

3、按回车键之后,可以看到a矩阵所有元素的平均值是 38.5000。

4、如果想求矩阵每一列的平均值,输入mean(a,1)。

5、如果想求矩阵每一行的平均值,输入mean(a,2)。

注意事项:

C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-07-22

如下:【注】VC6已被卸载,系统中只有VC 2010,但下面的代码用的是标准的C语句,因此在VC6是没有问题的,事实上任何一个C编译器都可以通过(已在VC2010、MinGW下测试通过)。

#include <cstdio>

double funAverage(int *p, int n);
int funMax(int p[][3], int n);
int funMin(int (*p)[3], int n);

int main(int argc, char const *argv[])
{
    int a[4][3], num;
    size_t i, j, ROWS, COLS, totalnum;

    ROWS = sizeof(a)/sizeof(a[0]);
    COLS = sizeof(a[0])/sizeof(a[0][0]);
    totalnum = ROWS * COLS;

    printf("Input %dx%d integer matrix:\n", ROWS, COLS);
    i = 0;
    while (i < ROWS) {        
        j = 0;
        while (j < COLS) {
            if (scanf("%d", &num) == 1) {
                a[i][j] = num;
                j++;
            }
        }    
        i ++;    
    }

    printf("\n");
    printf("Max: %d\n", funMax(a,4));
    printf("Min: %d\n", funMin(a,4));
    printf("Average: %g\n", funAverage(a[0],12));
    return 0;
}

double funAverage(int *p, int n) 
{
    int i;
    double sum = 0.0;
    for (i = 0; i < n; ++i)
        sum += p[i];

    return (double)(sum/n);
}
int funMax(int p[][3], int n)
{
    int i,j, cols, amax = p[0][0];
    cols = sizeof(p[0])/sizeof(p[0][0]);

    for (i = 0; i < n; ++i) 
        for (j = 0; j < cols; ++j)
            if (p[i][j] > amax) amax = p[i][j];

    return amax;    
}

运行如下:

Input 4x3 integer matrix:
1 2 3
4 5 6
7 8 9
10 11 12

Max: 12
Min: 1
Average: 6.5

本回答被提问者和网友采纳
第2个回答  2014-11-20
是用三个自定义函数吗?是的话我再写,不然太费时间追问

就是用上面那函数原型,平int funMax(int p[][3], int n)均值就用double funAverage(int *p, int n),最大值就用,,,,如果不可以的话,我也希望你能用呢的方法给我看看,谢谢