"but incorrect ,for some reson, is always 0"
That is not true. The variable incorrect changes its value on the call
incorrect=incorrect + 1;
Please, notice that the scope of the variable incorrect is limited to the else branch in function question_1().
That is, after you leave the else branch, the variable ceases to exist. The next time you call question_1() and enter the same else branch, the variable is recreated with a new value: 0 (which will be incremented by 1).
I think what you wanted to do here is declare incorrect as a global variable outside of the scope of your functions.
using namespace std;
static int incorrect = 0;