首页 > 解决方案 > 用于矩阵和双指针

问题描述

方阵的大小作为标准输入输入(输入值的范围是 2 到 10)。创建一个打印输入大小的单位矩阵的程序。

单位矩阵是从左上角到右下角的对角线(主对角线)为 1 且其他全部为零的矩阵。

例如)输入:5

结果 :

1 0 0 0 0\n
0 1 0 0 0\n
0 0 1 0 0\n
0 0 0 1 0\n
0 0 0 0 1\n

我的代码:

int main(){
int n;


scanf("%d", &n);

int **matrix = malloc(sizeof(int *) * n);

for (int i = 0; i < n; i++)
{
    matrix[i] = malloc(sizeof(int) * n);
    memset(matrix[i], 0, sizeof(int) * n);
}

for (int i = 0; i < n; i++)
{
    matrix[i][i] = 1;
    printf("%d ", matrix[i][i]);
}
printf("\n");



for (int i = 0; i < n; i++)
{
      free(matrix[i]);


}

free(matrix);

return 0;
}

..有什么错误?

标签: c

解决方案


您需要一个双循环来打印输出:

for (int i = 0; i < n; i++)
{
    matrix[i][i] = 1;  // set identity
}

for (int j=0; j<n; j++)
{
    for (int i = 0; i < n; i++)
    {
        printf("%d ", matrix[j][i]);
    }
    printf("\n");
}

推荐阅读