c - 将矩阵的主对角线与数字相乘

标签 c matrix multidimensional-array

我的程序必须接收一个数字 k,一个 4x4 矩阵,并且 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;
}

最佳答案

如果你想改变矩阵值,只改变循环操作,像这样:

for(row = 0 ; row < 4 ; row++)
{
    for(column = 0 ; column < 4 ; column++) {
        if ( row == column )
            matrix[row][column] *= k;
        printf("%3d", matrix[row][column]);
    }
    printf(" \n");
}

关于c - 将矩阵的主对角线与数字相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17747172/

相关文章:

c - AIX loadquery() 返回值解释(也是 64 位模式下的 SEGV)

c - 尝试输入值并使用指针将它们打印在矩阵中

Android:如何在中心点旋转位图

c - 替代 Windows 主机的 mman.h

c - 在 GCC 中每行列出一个目录内所有子文件夹和文件的完整路径

vb.net - 在VB.net中将csv数据转换为DataTable

matlab - 关于 ndarrays 的形状不可知切片

java - 如何在Java中打印指向数组的对象

c - 从 execv 运行 mysql 导入

c++ - 使用 OpenCV 导出颜色校正矩阵