打印矩阵行的函数

A function that prints a matrix row

我正在尝试编写一个函数来打印用户选择的矩阵行。它适用于矩阵的第一行,但不适用于其他行。 这是我的代码。

row:我们要打印的行 n:矩阵

中rows/columns的个数

矩阵 (nxn)

代码:

#include <stdio.h>
#define SIZE 50

void prow(float *arr, int row, int n){  
    int i;
    for(i = row * n; i < (row * n) + n; i++){
        printf("%f ", *(arr+i));
    }

}

int main(){
    int n, i, j;
    float matrix[SIZE][SIZE];

    printf("Row / column number: ");
    scanf("%d", &n);

    for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
            printf("[%d][%d] element: ", i, j);
            scanf("%f", &matrix[i][j]);
        }
    }


    prow(&matrix[0][0], 2, n);

    return 0;
}

编译器已经知道你的数组是 50 x 50 而不是别的

#define SIZE 50
float matrix[SIZE][SIZE];

但是您(可能?)使用该数组就好像它具有不同的大小一样,因为您输入 n 作为大小。因此,当您分配条目时,

scanf("%f", &matrix[i][j]);

它们没有放在正确的位置(根据编译器,每行仍然有 50 个条目,尽管 n 是其他东西)。

确保 nSIZE 匹配。