C 调用2D数组函数?
首先,如果你们中的一些人觉得我的问题愚蠢且容易解决,我向你们道歉,但我是c语言的初学者 我的任务是使用不同的函数创建3x3矩阵的逆矩阵 我现在要做的是告诉用户输入3x3矩阵的值,然后打印它们。我制作了两个函数来读取和打印值,但调用它们时遇到问题,因为我无法在C 调用2D数组函数?,c,function,matrix,multidimensional-array,call,C,Function,Matrix,Multidimensional Array,Call,首先,如果你们中的一些人觉得我的问题愚蠢且容易解决,我向你们道歉,但我是c语言的初学者 我的任务是使用不同的函数创建3x3矩阵的逆矩阵 我现在要做的是告诉用户输入3x3矩阵的值,然后打印它们。我制作了两个函数来读取和打印值,但调用它们时遇到问题,因为我无法在printf中直接调用数组 现在我可以运行程序,输入值并打印错误的结果,从而导致程序没有响应 #include <stdio.h> #include <stdlib.h> #define SIZE 3 //defini
printf
中直接调用数组
现在我可以运行程序,输入值并打印错误的结果,从而导致程序没有响应
#include <stdio.h>
#include <stdlib.h>
#define SIZE 3 //defining the size of the matrix (3x3)
//prototyping the functions used to calculate the inverse of the matrix
void readMatrix(double a[SIZE][SIZE]);
void printMatrix(double a[SIZE][SIZE]);
main()
{
double a[SIZE][SIZE];
int i,j;
printf("Enter the values for the matrix:\n", i, j);
readMatrix(a);
printf("Your Matrix:%d\n",a[i][j]);
printMatrix(a);
return 0;
}
//function 1
//letting the user to enter a matrix
void readMatrix(double a[SIZE][SIZE]){
int i,j;
for(i = 0; i < SIZE; i++){
for(j = 0; j < SIZE; j++){
scanf("%d", &a[i][j]);
}
}
}
//function 2
//outputing the given matrix
void printMatrix(double a[SIZE][SIZE]){
int i,j;
for(i = 0; i < SIZE; i++){
for(i = 0; i < SIZE; j++){
printf("Your matrix is: %d", a[i][j]);
}
}
}
#包括
#包括
#定义大小3//定义矩阵的大小(3x3)
//原型化用于计算矩阵逆的函数
void readMatrix(双a[尺寸][尺寸]);
空打印矩阵(双a[尺寸][尺寸]);
main()
{
双a[尺码][尺码];
int i,j;
printf(“输入矩阵的值:\n”,i,j);
阅读矩阵(a);
printf(“您的矩阵:%d\n”,a[i][j]);
印刷矩阵(a);
返回0;
}
//职能1
//允许用户输入矩阵
无效读取矩阵(双a[大小][大小]){
int i,j;
对于(i=0;i
在printf
和scanf
中,传递与变量指针类型匹配的精确格式说明符至关重要。如果格式说明符与提供的参数不匹配,则结果是未定义的行为
实际上,这
scanf("%d", &a[i][j]);
需要替换为
scanf("%lf", &a[i][j]);
对于printf也是一样(“你的矩阵是:%d”,a[i][j])代码>->printf(“你的矩阵是:%lf”,a[i][j])代码>
另外,在printMatrix
中,您已经在内部循环中使用了两次循环变量i
。你想要的是
for(i = 0; i < SIZE; i++){
for(j = 0; j < SIZE; j++){
printf("%lf ", a[i][j]);
printf("\n");
}
由于此时,i
和j
未初始化,它们将包含垃圾。在printf
和scanf
中,传递与变量指针类型匹配的确切格式说明符至关重要。如果格式说明符与提供的参数不匹配,则结果是未定义的行为
实际上,这
scanf("%d", &a[i][j]);
需要替换为
scanf("%lf", &a[i][j]);
对于printf也是一样(“你的矩阵是:%d”,a[i][j])代码>->printf(“你的矩阵是:%lf”,a[i][j])代码>
另外,在printMatrix
中,您已经在内部循环中使用了两次循环变量i
。你想要的是
for(i = 0; i < SIZE; i++){
for(j = 0; j < SIZE; j++){
printf("%lf ", a[i][j]);
printf("\n");
}
因为此时,i
和j
未初始化,它们将包含垃圾。在printMatrix中,存在一个无限循环,它肯定会导致程序无响应。应该是:
for(j = 0; j < SIZE; j++){
printf("Your matrix is: %d", a[i][j]);
}
(j=0;j{
printf(“你的矩阵是:%d”,a[i][j]);
}
在printMatrix中,有一个无限循环,它肯定会导致程序没有响应。应该是:
for(j = 0; j < SIZE; j++){
printf("Your matrix is: %d", a[i][j]);
}
(j=0;j{
printf(“你的矩阵是:%d”,a[i][j]);
}
上述代码存在以下问题:
- 第
printf行(“您的矩阵:%d\n”,a[i][j])函数的code>,因为变量i
和j
未初始化,所以它包含垃圾值。因此,不要打印a[i][j]
处的值,因为这可能导致分段错误或使用有效值初始化i
和j
,即数组中的有效索引双a[][
。还可以更改行printf(“输入矩阵的值:\n”,i,j)
在main()
到printf(“输入矩阵值:\n”)代码>。因为这里没有使用i
和j
- 第
scanf行(“%d”、&a[i][j])函数的代码>无效读取矩阵(双a[SIZE][SIZE])
。由于您正在读取的是double
基本数据类型,因此应使用%lf
格式化程序,而不是%d
。与函数中的行printf相同(“您的矩阵是:%d”,a[i][j])
无效的printMatrix(双a[SIZE][SIZE])
- 函数
void readMatrix(双a[SIZE][SIZE])
的第行(i=0;i
。它应该是(j=0;j
的,即在内部循环中使用的变量应该是j
而不是i
您可以找到更正代码后的工作代码。上述代码存在以下问题:
- 第
printf行(“您的矩阵:%d\n”,a[i][j])函数的code>,因为变量i
和j
未初始化,所以它包含垃圾值。因此,不要打印a[i][j]
处的值,因为这可能导致分段错误或使用有效值初始化i
和j
,即数组中的有效索引双a[][
。还可以更改行printf(“输入矩阵的值:\n”,i,j)
在main()
到printf(“输入矩阵值:\n”)代码>。因为这里没有使用i
和j
- 第
scanf行(“%d”、&a[i][j])函数的代码>无效读取矩阵(双a[SIZE][SIZE])
。由于您正在读取的是double
基本数据类型,因此应使用%lf
格式化程序,而不是%d
。与函数中的行printf相同(“您的矩阵是:%d”,a[i][j])
无效的printMatrix(双a[SIZE][SIZE])
- 在函数的
无效读取的(i=0;i
行中