Все корректно работает. Просто после ввода буквы у вас еще первод строки захватывает
C:\MinGW\bin>test.exe
a
"a" является буквой!
Ее номер: 1
[10]
1
[49]
[10]
3
[51]
[10]
a
"a" является буквой!
Ее номер: 1
[10]
b
"b" является буквой!
Ее номер: 2
[10]
#include <stdio.h>
#include <ctype.h>
int main(void) {
int ch;
while ((ch = getchar()) != EOF) {
if (ch=='\n' || ch=='\r') continue;
if (isalpha(ch)) {
printf("[%c] является буквой, ее номер: %d\n", ch, ch-96);
}
else {
printf("[%d] это не буква\n", ch);
}
}
return 0;
}