0

私のプログラムは、4x4 行列である数値 k を受け取る必要があり、k にこの行列の主対角を掛ける必要があります。出力は入力行列である必要がありますが、その主対角に k を掛けたものです。たとえば、k = 2 と次の行列を指定します。

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1

出力は次のようになります。

2 1 1 1
1 2 1 1
1 1 2 1
1 1 1 2

しかし、私のプログラムは次の出力を提供します:

2 1 1 1 
1 1 1 1
1 1 1 1
1 1 1 1

何故ですか?行列の最初の数だけでなく、主対角線を掛けるにはどうすればよいですか?

私のコード:

#include <stdio.h>

int main() {

    int k;
    int mult = 0;

    int matrix[4][4];
    int row, column;

    for (row = 0; row < 4; row++) {
        for (column = 0; column < 4; column++) {
            scanf("%d", &matrix[row][column]);
        }
    }

    for(row = 0 ; row < 4 ; row++)
    {
        for(column = 0 ; column < 4 ; column++) {
            printf("%3d", matrix[row][column]);

            mult = k * matrix[row][row];
        }
        printf(" \n");
    }

    return 0;
}
4

6 に答える 6

0

このコードは機能しているようです。確認してください。

for(row=0;row<4;i++)
{
    mat[row][row]*=k;
    for(col=0;col<4;j++)
    {
        printf("%d ",mat[row][col]);
    }
    printf("\n");
}
于 2013-07-19T13:44:00.907 に答える
0

変数を初期化する必要がありますk

scanf("%d", &k);

入力行列の内容を変更していません。

于 2013-07-19T13:55:04.117 に答える