为什么第二次循环不执行了

#include
int main(void) {
char ch;
int i = 1;

do{
scanf("%c", &ch);
if(ch >='a'&&ch <='z')
{

        printf("%c\n", ch-32);}
    else 
    {    printf("error");
        }

    ++i;

}while(i <=2);

return 0;

}
键入小写字母后直接显示大写字母和error,第二次循环没了

你是输入一个字符,然后换行后再输入第二个字符的吧?
那么在scanf("%c",&ch);后面加上getchar();

需要清空一下输入缓冲区,第二次循环的时候接受的是回车的字符。所以打印了errorz。

你是输入一个字符,然后换行后再输入第二个字符的吧?
那么在scanf("%c",&ch);后面加上getchar();
或者使用getch()