很简单的一个高斯消元法代码,麻烦帮我看下这段代码哪里有问题?

这周作业是编写一个高斯消元法的算法,所以我就自编了一个,逻辑比较简单,但是我在运行的时候总是不显示运行结果,卡在那里,请大佬帮我看一下问题出在哪里

#include <iostream>
#include<math.h> 
using namespace std;
#define N 3
double A[N][N + 1] = { {10,-1,-2,7.2},
            {-1,10,-2,8.3},
            {-1,-1,5,4.2} };
double X[N] = { 0,0,0 };
int main()
{
    long i, j, k;
    double s;
    for (k = 0; k < N - 1; k++) {
        for (i = k + 1; i <= N - 1; i++) {
            A[i][k] = A[i][k] / A[k][k];
            for (j = k + 1; j <= N; j++)
                A[i][j] = A[i][j] - A[i][k] * A[k][j];
        }
        for (k = N - 1; k >= 0; k--)
        {
            s = 0;
            for (j = k + 1; j <= N - 1; j++)
            {
                s = s + X[j] * A[k][j];
                X[k] = (A[k][N]) - s / A[k][k];
            }
        }
    }
    printf("\n该方程的解向量为:\n");
    for (i = 0; i < N; i++)
    {
        printf(" %lf", X[i]);
    }
}

https://blog.csdn.net/sf____/article/details/9898989