首页 > 解决方案 > 如何正确填充 NxN 矩阵

问题描述

我一直在尝试创建一个 NxN 方阵(方阵的大小由用户确定),但似乎遇到了问题。显示的矩阵实际上是一个对称矩阵,这不是我想要的,因为我希望能够让每个值都保存一个唯一的整数。任何帮助是极大的赞赏。这是我的代码:

#include <stdio.h>

int main()
{
    int i;
    int j;
    int size = 1;
    int array [size][size];
    
    printf ("Enter the size you would like for the nxn matrix: ");
    scanf ("%d", &size);
    
    printf ("Now enter elements into the matrix. \n");
    
    for (i = 0; i < size; i++)
    {
       for (j = 0; j < size; j++)
       {
          printf ("[%d][%d] = ", i, j);
          scanf ("%d", &array [i][j]);
       }
    }
    printf ("------------------------\n\n");
    
    printf ("the matrix is: \n\n");
    
    for (i = 0; i < size; i++)
    {
       for (j = 0; j < size; j++)
       {
          printf ("  %d  ", array [i][j]);
       }
       printf ("\n");
    }
    return (0);
}

标签: arrayscfor-looplinear-algebra

解决方案


#include <stdio.h>  
#include <stdlib.h>

int main()
{
    // Create variables
    int i, j, size;
    
    // Create 2D array
    printf ("Enter the size you would like for the nxn matrix: ");
    scanf ("%d", &size);
    int *array = (int *)malloc(size * size * sizeof(int)); 
    
    // Fill 2D array with values
    printf ("Now enter elements into the matrix. \n");
    for (i = 0; i < size; i++)
    {
       for (j = 0; j < size; j++)
       {
          printf ("[%d][%d] = ", i, j);
          scanf ("%d", &array[i * size + j]);
       }
    }
    printf ("------------------------\n\n");
    
    // Display values of 2D array
    printf ("the matrix is: \n\n");
    for (i = 0; i < size; i++)
    {
       for (j = 0; j < size; j++)
       {
          printf ("%d", array[i * size + j]);
       }
       printf ("\n");
    }
    
    free(array);
    return (0);
}

推荐阅读