c语言问题 输入一个非字母运行结果会多出一个非字母字符

输入一个非字母运行结果会多出一个非字母字符
#include
int main()
{
char ch;
printf("Enter a character:"); scanf("%c",&ch);
if(ch>='A'&&ch<='Z'){
ch=ch+32;
}
else if(ch>='a'&&ch<='z')
ch=ch-32;
else
printf("%c is not a letter",ch);
printf("%c",ch);
return 0;

#include<stdio.h>
int main()
{
char ch;
printf("Enter a character:"); scanf("%c",&ch);
if(ch>='A'&&ch<='Z'){
ch=ch+32;
printf("%c",ch);
}
else if(ch>='a'&&ch<='z')
{ch=ch-32;
printf("%c",ch);
}
else
printf("%c is not a letter",ch);

return 0;

非字母时,两个printf语句都执行了啊。修改如下:

#include<stdio.h> int main(){
char ch;
printf("Enter a character:");
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
    printf("%c",ch+32);
else if(ch>='a'&&ch<='z')
    printf("%c",ch-32);
else
    printf("%c is not a letter",ch);
 
return 0;
}