I've been introduced to C this year as part of my degree, during which I have to write simple programs and test them to be idiot-proof by running them over and over again, putting nonsense variables in, etc. and I had an idea to write a program with the ability to restart itself without having to run the program again.
I've tried writing a program to perform this function (which turned out to be harder than I first thought) and I now have it working, albeit using a goto function that are frowned upon. Now the only problem I have is a while loop to check for nonsense input, that seems determined to run at least once ignoring a prompt for a valid input. 
Please could someone give me an idea why this is happening? (My compiler is Dev-C++ 4.9.9.2)
int main (void)
{
  mainprogram:
            printf("\nPROGRAM START\n");
    //code copied from an exam, to check that the program performs a function
    //when ran through again
    int i,j,k;
    printf("Please enter 7:");
    scanf("%d",&i);
    printf("Please enter 4:");
    scanf("%d",&j);
    printf("Please enter 0:");
    scanf("%d",&k);
    //this is to check that the program will take input when it is restarted
    do {
        switch (i%j) {
            case 3:
                i--;
                k*=i;
                break;
            case 2:
                i--;
                k+=i;
            default:
                i--;
                k++;
                break;
        }
        printf("i is %d k is %d\n",i,k);
    } while (i>0);
    //end of copied code
    char prompt='y';
    printf("\nRestart program?");
    scanf("%c",&prompt);
    while (prompt != 'y' && prompt != 'Y' && prompt != 'n' && prompt != 'N')
    {
    //this is the problem section, when entering nonsense input, the error messages
    //display twice before pausing for input, and when restarted, the program does 
    //run again but displays the error messages once before pausing for input
       printf("\nERROR: INVALID INPUT");
       printf("\n\nRestart program?");
       prompt='y';
       scanf("%c",&prompt);
    }
    if (prompt == 'y' || prompt == 'Y') 
    {
          goto mainprogram;
          }
    //
    return 0;
}
 
     
     
     
     
    