我想让输入的字母用其在26个英文字母中的其后三个字母代替该字母输出

我想让输入的字母用其在26个英文字母中的其后三个字母代替该字母输入其它字符时不变但是我这个程序为啥再输入数字的时候也往后输出了三位我明明用if限制了有没有人可以教一下谢谢
#include

int main()
{
char st,x;
int i;

while((st=getchar())!='\n'){
    if('a'<=st<='z'||'A'<=st<='Z'){
    for(i=1;i<=3;i++){
        x=st+i;
        putchar(x);
    }
    }else{
        putchar(st);
    }
    
}    

}

运行结果及报错内容

img

因为这个语法错误 改成 if((st>='a'&&st<='z')||(st>='A'&&st<='Z')) ,按照你这样写是 恒成立的,所以会走if里边,输出对应的后三位

img

if('a'<=st<='z'||'A'<=st<='Z')
改为
if(st>='a' && st<='z' || st>='A' && st<='Z')

你的if条件语句写错了,改成这样。if(('a'<=st&&st<='z')||'(A'<=st&&st<='Z')){