Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 调用2D数组函数?_C_Function_Matrix_Multidimensional Array_Call - Fatal编程技术网

C 调用2D数组函数?

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

首先,如果你们中的一些人觉得我的问题愚蠢且容易解决,我向你们道歉,但我是c语言的初学者

我的任务是使用不同的函数创建3x3矩阵的逆矩阵

我现在要做的是告诉用户输入3x3矩阵的值,然后打印它们。我制作了两个函数来读取和打印值,但调用它们时遇到问题,因为我无法在
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]),因为变量
    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]),因为变量
    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
    行中