C言語で行列の各行の最大値を求めるには

二重ループを用いて行列全部を回し各行で最大値を求める。

以下にコードの例を示します。

#include <stdio.h>

#define ROWS 3
#define COLS 4

void findMaxInRows(int matrix[ROWS][COLS], int maxValues[ROWS]) {
    for (int i = 0; i < ROWS; i++) {
        int max = matrix[i][0]; // 假设当前行的第一个元素为最大值

        for (int j = 1; j < COLS; j++) {
            if (matrix[i][j] > max) { // 如果当前元素大于最大值,则更新最大值
                max = matrix[i][j];
            }
        }

        maxValues[i] = max; // 将最大值保存到数组中
    }
}

int main() {
    int matrix[ROWS][COLS] = {
        { 1, 2, 3, 4 },
        { 5, 6, 7, 8 },
        { 9, 10, 11, 12 }
    };

    int maxValues[ROWS];

    findMaxInRows(matrix, maxValues);

    for (int i = 0; i < ROWS; i++) {
        printf("Max value in row %d: %d\n", i, maxValues[i]);
    }

    return 0;
}

実行結果:

Max value in row 0: 4
Max value in row 1: 8
Max value in row 2: 12

findMaxInRows 関数では、まず各行の最初の要素を最大値と仮定し、その後その行の全ての要素を走査し、現在の最大値よりも大きい要素があれば最大値を更新します。最後にその最大値をmaxValues配列に保存し、main関数で出力しています。

bannerAds