找到二维数组的每一列的最大值

时间:2020-05-09 19:41:51

标签: c arrays

#i我想找到每一行的最大值,我已经在size [5] [2]的主目录中创建了一个数组,我想找到每一列的最大值#

void
maximum(int a[5][2])
{

    int max = a[0][0];
    int i, j;

    for (i = 0; i < 2; i++) {
        int max = a[0][i];

        for (j = 0; j < 5; j++)
            if (a[j][i] > max)
                max = a[j][i];
    }
    printf("Maximum of 1st column= %d \n", max);

    for (i = 0; i < 2; i++) {
        int max = a[1][i];

        for (j = 0; j < 5; j++)
            if (a[j][i] > max)
                max = a[j][i];
    }
    printf("Maximum of 2st column= %d \n", max);

    max = a[0][0];
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 5; j++) {
            if (a[i][j] > max)
                max = a[i][j];
        }

    }
    printf("Maximum of all %d \n", max);
}

2 个答案:

答案 0 :(得分:4)

您正在做相反的事情。 [0][i]是第一行,而不是第一列。您必须像[i][0][i][1]那样做,对于j也必须如此。是max=a[i][j]

就像您说的那样,仅检查第一行和第二行的最大值,而其余三行未选中。希望对您有所帮助。

答案 1 :(得分:0)

您需要仔细选择索引和顺序。

#include <stdio.h>
#include <stdlib.h>

void show_max(int rows, int cols, int mat[rows][cols])
{ //              ^^^^      ^^^^      ^^^^^^^^^^^^^^^    VLA notation

    // Traverse the array row-major order
    for (int r = 0; r < rows; ++r)
    {
        int max = mat[r][0];
        //            ^^^^              First element of row r
        for (int c = 1; c < cols; ++c)
        {
            if (mat[r][c] > max)
                max = mat[r][c];
                //        ^^^^
        }
        printf("Max of ROW %d: %d\n", r, max);
    }

    int max_global = mat[0][0];

    // Traverse the array in colmun-major order
    for (int c = 0; c < cols; ++c)              // <-- 
    {
        int max = mat[0][c];
        //            ^^^^                      // First element of column c
        for (int r = 1; r < rows; ++r)          // <-- 
        {
            if (mat[r][c] > max)
                max = mat[r][c];
                //        ^^^^          
        }
        printf("Max of COLUMN %d: %d\n", c, max);

        // This could be in the first nested loop.
        if (max > max_global)          
            max_global = max;
    }
    printf("Max ELEMENT: %d\n", max_global);
}


int main(void)
{
    int mat[5][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10}};

    show_max(5, 2, mat);
}