Интересно, что код символа
'0' Вы догадались вычесть, а код символа
'a' 
нет. Ведь буквы (обычно) идут в таблице символов тоже по порядку (алфавитному). Впрочем, даже если бы это и было не так, Ваш вариант с использованием конструкции
switch ... case вполне адекватен (только не стоит забывать про слово
break). Что же касается возвращаемого функцией
pow значения, то его, конечно, можно было бы преобразовать к целочисленному, используя приведение типов или какую-нибудь функцию математической библиотеки (округление, взятие целой части и т.п.), однако в данном случае гораздо лучше эту функцию и вовсе не использовать, а лишь заметить, что

.
P.S. К нумерации с 0 еще не привыкли?