2次正方行列の逆行列を求めるプログラム

scanfの使い方には気をつけなければいけないらしいが、今の自分には他の方法を知らないため使用した。

#include<stdio.h>

int main()
{
    int i,j;
    double a[2][2],b[2][2];
    
    // 行列の入力
    for (i = 0; i <= 1; i++) {
        for (j = 0; j <= 1; j++) {
            printf("要素,a[%d][%d]を入力せよ\n",i+1,j+1);

            scanf("%lf",&a[i][j]);
        }
    }

    //行列の確認
    printf("入力した行列a[i][j]は以下のようになります.\n");
    for (i = 0; i <= 1; i++) {
        for (j = 0; j <= 1; j++) {
            printf("%f\t",a[i][j]);
        }
        printf("\n");
    }
    
    //逆行列の存在確認と計算
    if(a[0][0]*a[1][1]-a[0][1]*a[1][0] == 0){
        printf("逆行列は存在しません\n");
    }else{
        printf("逆行列は以下のようになります.\n");
        for (i = 0; i <= 1; i++) {
            for (j = 0; j <= 1; j++) {
                if(i == j){
                    b[i][j]=a[1-i][1-j]/(a[0][0]*a[1][1]-a[0][1]*a[1][0]);
                    printf("%f\t",b[i][j]);
                }else{
                    b[i][j]=a[i][j]*(-1)/(a[0][0]*a[1][1]-a[0][1]*a[1][0]);
                    printf("%f\t",b[i][j]);
                }
            }
            printf("\n");
        }
    }
}