Ваша проблема в использовании isdigit. Сравните этот код:
int main()
{
int number1;
puts("Enter number 1 please:");
scanf_s("%d",&number1);
printf("You entered %d\n", number1);
if (isdigit(number1))
{
puts("Input is correct.");
}
else
{
puts("Your input is not correct. Enter a number please.");
}
std::cin.get();
std::cin.get();
}
Когда вы вводите действительный номер, это отражается в успешной печати этого номера.
Вы должны проверить возврат scanf, а не использовать isdigit, например, этот пример кода:
int main()
{
int number1;
puts("Enter number 1 please:");
if (scanf_s("%d",&number1))
puts("Input is correct.");
else
puts("Your input is not correct. Enter a number please.");
std::cin.get();
std::cin.get();
}
Я считаю, что для более чем одного поля вам нужно будет проверить возвращаемое значение scanf более точно, чем просто ноль или единицу.