首页 > 解决方案 > 在c中打印身份(“I”)矩阵

问题描述

我正在尝试在方阵数组中打印出单位矩阵。

这是我当前的代码:

#include <stdio.h>

int main(){
    int n = 50;
    int i,j = 0;
    int a[n][n];

    for (i=0; i<n; i++){
        for (j=0; j<n; j++){
            if (a[i] == a[j]){
                printf("1");
            } else {
                printf("0");
            }
        }
    }
    printf("/n");
    return 0;
}

我的 macOS 终端没有告诉我有任何语法错误并且可以正确编译。但是当我运行可执行文件时,我什么也没有打印出来。

我的代码中是否有任何错误?

非常感谢你的帮助。

标签: arrayscmatrix

解决方案


发布的代码a在初始化之前正在访问。正如所指出的,如果它只是想打印一个单位矩阵(而不实际创建它),则a[i] == a[j]可以简单地将测试替换为i == j.

如果您想实际初始化a,然后打印它,您可以按如下方式进行。首先,要初始化它,你可以这样做:

for (i=0; i<n; i++) {
    for (j=0; j<n; j++) {
        a[i][j] = i == j;
    }
}

该表达式的i == j计算结果为1如果ij相等,0否则,这将1在主对角线和0其他地方创建一个标识矩阵。

初始化后,您可以更改它,使用它,打印它等。要打印它,您可以:

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

这会在每个元素之前打印一个空格(作为分隔符),并以换行符结束每一行。根据您的需要,您可以将其更改为对每个元素使用固定宽度等。这实际上取决于您正在处理的值以及您希望它在打印时的外观。


推荐阅读