Budyla, Очевидно же - буква не введется в int, проверка делается внутри scanf, задается шаблоном.
Вообще если хотите полный контроль над вводом, то придется отказаться от возможностей стандартной библиотеки, использовать raw режим терминала для вода, считывать ввод посимвольно и проверять его. Все это не слишком сложно, не интересно, не кросс-платформенно (хотя можно поискать кросс-платформенную библиотеку, которая умеет посимвольный ввод). Но в качестве практики программирования вполне нормальная задача.