打印矩阵行的函数
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
是其他东西)。
确保 n
和 SIZE
匹配。
我正在尝试编写一个函数来打印用户选择的矩阵行。它适用于矩阵的第一行,但不适用于其他行。 这是我的代码。
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
是其他东西)。
确保 n
和 SIZE
匹配。