Почему не считывает русскую букву в char?
При работе с языками в консоли обычно возникают следующие вопросы.
1) Консоль. Какая кодировка по умолчанию для однобайтных символов. Смотри команду.
chcp для windows или 
$ locale для linux.
2) Какая кодировка указана для char для текущего компиллятора. Включен ли режим _UNICIDE. 
Посмотри что делают
setLocale(...);
 setCodepage(...);
3) Какой размер символа sizeof(char).
4) В какой кодировке написан исходник. Это можно проверить если посмотреть hex редактором. Там где русская буква может быть например 0xC0 для однобайтной и двух байтной для Unicode.
5) Установлены ли шрифты? Операционка может быть англо-язычной и в этом случае она не обязата что-то специфичное отображать.
Если программа выполняется под виндой, то:
1. В консоли винды по умолчанию кодировка cp866 (да же не cp1251 и тем более не unicode). Кодировка консоли в винде может быть легко изменена с помощью команды консоли chcp, так что полагаться на то, что в консоли будет всегда одна и та же кодировка не стоит. Когда вы читаете символ с консоли, то он появляется в программе в кодировке консоли.
2. Еще у вас есть кодировка файла исходного кода. Компилятор сам ничего не перекодирует. В какой кодировке написаны ваши константы в исходниках в той они и будут в программе. Когда вы выполняете операцию сравнения, то символ в кодировке файла исходного кода сравнивается с символом в кодировке консоли. Если обе кодировки не совпадают - сравнение будет не удачным, даже если символ один и тот же.
3. Простой вариант - писать исходники в cp866 и не менять кодировку консоли в тестах. Может не работать, если, например, запускаете программу из MSVC - IDE может сама менять кодировку своей отладочной консоли. Лучше тесты запускать вручную в отдельном консольном окне.
4. Правильный вариант - исходники писать в UTF8, символьные и строковые константы писать как wide char (wchar_t, в винде это UTF-16) перед вводом узнать кодировку консоли, перекодировать введенные символы в UTF-16, сравнивать символы в UTF-16. С выводом в консоль - та же история. В WinAPI есть функции перекодировки из многобайтных (cp866/1251, ...) в широкие символы и обратно.

В линуксе сейчас повсеместно консоль в unicode, соответственно и читать вам надо unicode и сравнивать с unicode.