Code about 4 digit 7 segment

Hi everyone, I made a program which is supposed to display on the 4 digits 7 segment the number I wrote in my variable "i". Of course it does not work and I do not understand why. I tested the conections on my arduino with other programs and there is no problem. Thank you for your help !
(I used "u" for units, "d" for tens, "c" for hundreds and "m" for thousands)

const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;
const int H = 9;
const int D1 = 10;
const int D2 = 11;
const int D3 = 12;
const int D4 = 13;
int i = 99;
char u;
char d;
char c;
char m;

void setup() {

  Serial.begin(9600);

  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT);
  pinMode(D3, OUTPUT);
  pinMode(D4, OUTPUT);
  digitalWrite(D1, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, HIGH);

  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(H, OUTPUT);
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(H, LOW);
}
void N0(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(E, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(G, LOW);
}
void N1(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
}
void N2(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, HIGH);
  digitalWrite(E, HIGH);
  digitalWrite(F, LOW);
  digitalWrite(G, HIGH);
}
void N3(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, HIGH);
}
void N4(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, HIGH);
  digitalWrite(G, HIGH);
}
void N5(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(E, LOW);
  digitalWrite(F, HIGH);
  digitalWrite(G, HIGH);
}
void N6(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(E, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(G, HIGH);
}
void N7(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
}
void N8(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(E, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(G, HIGH);
}
void N9(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, HIGH);
  digitalWrite(G, HIGH);
}
void lireU(void) {
  digitalWrite(D1, LOW);
  if (u == 0) {
    N0();
  }
  if (u == 1) {
    N1();
  }
  if (u == 2) {
    N2();
  }
  if (u == 3) {
    N3();
  }
  if (u == 4) {
    N4();
  }
  if (u == 5) {
    N5();
  }
  if (u == 6) {
    N6();
  }
  if (u == 7) {
    N7();
  }
  if (u == 8) {
    N8();
  }
  if (u == 9) {
    N9();
  }
}
void lireD(void) {
  digitalWrite(D2, LOW);
  if (d == 0) {
    N0();
  }
  if (d == 1) {
    N1();
  }
  if (d == 2) {
    N2();
  }
  if (d == 3) {
    N3();
  }
  if (d == 4) {
    N4();
  }
  if (d == 5) {
    N5();
  }
  if (d == 6) {
    N6();
  }
  if (d == 7) {
    N7();
  }
  if (d == 8) {
    N8();
  }
  if (d == 9) {
    N9();
  }
}
void lireC(void) {
  digitalWrite(D3, LOW);
  if (c == 0) {
    N0();
  }
  if (c == 1) {
    N1();
  }
  if (c == 2) {
    N2();
  }
  if (c == 3) {
    N3();
  }
  if (c == 4) {
    N4();
  }
  if (c == 5) {
    N5();
  }
  if (c == 6) {
    N6();
  }
  if (c == 7) {
    N7();
  }
  if (c == 8) {
    N8();
  }
  if (c == 9) {
    N9();
  }
}
void lireM(void) {
  digitalWrite(D4, LOW);
  if (m == 0) {
    N0();
  }
  if (m == 1) {
    N1();
  }
  if (m == 2) {
    N2();
  }
  if (m == 3) {
    N3();
  }
  if (m == 4) {
    N4();
  }
  if (m == 5) {
    N5();
  }
  if (m == 6) {
    N6();
  }
  if (m == 7) {
    N7();
  }
  if (m == 8) {
    N8();
  }
  if (m == 9) {
    N9();
  }
}
void loop() {
  if (floor(i / 1000) == 0) {
    digitalWrite(D4, HIGH);
  }
  if (floor(i / 100) == 0) {
    digitalWrite(D4, HIGH);
    digitalWrite(D3, HIGH);
  }
  if (floor(i / 10) == 0) {
    digitalWrite(D4, HIGH);
    digitalWrite(D3, HIGH);
    digitalWrite(D2, HIGH);
  }

  if (i < 10) {
    i = u;
    lireU();
  }
  if ((i > 9) && (i < 100)) {
    int X = i / 10;
    d = floor(X);
    u = X - d;
    lireU();
    lireD();
  }
  if ((i > 99) && (i < 1000)) {
    int X = i / 10;
    int y = floor(X);
    u = X - y;
    int Z = y / 10;
    c = floor(Z);
    d = Z - c;
  }
}

Of course it does not work

What does it do ?
When you tested a small part of the program, maybe one number on one display, did it work ?
If you did not not test a small part of the program then why not ?

How is the display wired ?

It looks like you need to learn about using functions, sending parameters to them and arrays to hold data such as a list of segments for each numeric character.

In fact when I launch it I have the two digits on the left which are all lighted and it stat like that.

And the circuit diagram ?