Q:

How to order functions that are dependents on eachother?

I have learned the basics of C and C++ at school during the last two years and I just begin a new year this Monday so I wanted to train a bit because I have forgotten a lot of things during the holidays. 
So, I want to program a mini-game in the console that's called "more or less". I have to guess a number and for each number I propose, the console tells me if the secret number is higher or not. Nothing crazy.
I plan to add another mini-game and some options so I made a menu and by simply tapping on a number, I choose where I want to go.
The problem is that I made a restart function at the end of the game that allows me to choose if I want to restart a game or go back to the menu.
So the menu function as to be after the mini-game function but, at the same time, the restart function as to be in the mini-game function (it's a while loop) AND after the menu function.
I think there is another way to do this but I don't know-how. I have no idea about that.
I described my code in English because it's written in French (i am French). You can try without reading the translation if you are good enough :)
Thank you for taking from your time to help random people around the world. You all are kinds of Super Informaticians I guess :) 
Don't hesitate to tell me if I make some mistakes in Shakspeare's language. 
//THE MINI-GAME FUNCTION
int Plus_ou_moins() { //More or less - the game
Selection_nombre_mystere(); //function that defines the mistery number
printf("\nRentrez un nombre pour commencer\n"); //Enter a number to begin
printf("\n");
while (nombreEntre != nombreMystere) { //while proposed nb != mystery nb
    scanf("%d", &nombreEntre); //I read then stack the value in a variable
    if (nombreMystere > nombreEntre) //If the number isn't high enough
        printf("+\n"); //Write +
    else if (nombreMystere < nombreEntre) //the opposite
        printf("-\n");
    else if (nombreMystere == nombreEntre) { //I guessed the good number
        printf("Bravo, vous avez trouve le nombre mystere: %d\n", nombreMystere); //THE RESTART PART IN THE MINI-GAME FUNCTION ->                 
        int restart = 0;
        printf("Voulez vous jouer de nouveau ? "); //try again ?
        scanf("%d", &restart);//1=yes 0=no
        if (restart == 0) {
            Affichage_menu(); //I display the menu if it's no
        } else {
            Plus_ou_moins(); //I restart the game if it's yes
        }
    }
}
return 0;}

//THE MENU'S DISPLAY FUNCTION
void Affichage_menu(){
printf("=== MENU ===\n"); //Display things
printf("\n");
printf("1. Plus ou moins\n");
printf("2. Pour combien\n");
printf("3. Options\n");
printf("4. Statistiques\n");
Choix(); //I choose the number related to the game(1).
switch (choix) {
    case 1:
        Plus_ou_moins(); //I START THE GAME = IMPOSSIBLE because the game is declared before. Even if I reverse the order of the 2 functions, the menu is not declared at the restart part.
        break;
}}

A:

The answer is that the menu function should call the game function, but the game function should not call the menu function, and the game function should not call itself. 
To avoid the case where the game function calls itself, you can use an infinite loop: while(1). That way, if the user chooses to play again, the loop will start the game over. If the user chooses to exit the game, then a simple return statement sends the user back to the menu.
The menu also needs an infinite loop. And the menu needs some way to exit the loop. So I would add another menu item, number 5 in the example below. When the user selects 5, the function returns, exiting the loop.
void Plus_ou_moins(void) { //More or less - the game
    while (1) {  // repeat the game until the user decides to stop
        Selection_nombre_mystere(); //function that defines the mistery number
        printf("\nRentrez un nombre pour commencer\n"); //Enter a number to begin
        printf("\n");
        while (nombreEntre != nombreMystere) { //while proposed nb != mystery nb
            scanf("%d", &nombreEntre); //I read then stack the value in a variable
            if (nombreMystere > nombreEntre) //If the number isn't high enough
                printf("+\n"); //Write +
            else if (nombreMystere < nombreEntre) //the opposite
                printf("-\n");
            else if (nombreMystere == nombreEntre) { //I guessed the good number
                printf("Bravo, vous avez trouve le nombre mystere: %d\n", nombreMystere); //THE RESTART PART IN THE MINI-GAME FUNCTION ->
                int restart = 0;
                printf("Voulez vous jouer de nouveau ? "); //try again ?
                scanf("%d", &restart);//1=yes 0=no
                if (restart == 0) {
                    return; // if no, return to the menu
                }
            }
        }
    }
}

void Affichage_menu(void){
    while (1) {  // repeat the menu until the user decides to exit
        printf("=== MENU ===\n"); //Display things
        printf("\n");
        printf("1. Plus ou moins\n");
        printf("2. Pour combien\n");
        printf("3. Options\n");
        printf("4. Statistiques\n");
        printf("5. Sortir\n");
        Choix(); //I choose the number related to the game(1).
        switch (choix) {
            case 1:
                Plus_ou_moins(); //I START THE GAME
                break;
            case 5:
                return; // exit the menu
        }
    }
}

