c++题简单但是不会啊求

输入一个字符串(以回车符结束),将其中
的字母转换成其后的第n个字母,非字母字符忽略,生
成一个新的字符串,输出转换后的字符串。若输入的字
符串为“a1b2c3d4”,且n=1,则输出为“b1c2d3e4”。(n
由键盘输入,需要判断n的合法性原字符串保持不
变)


#include <stdio.h>
int main(){
    char s[100],c;
    int i=0,n,cnt=0;
    while(1){
        scanf("%c",&c);
        if(c == '\n') break;
        s[cnt++] = c;
    }
    printf("请输入N的值:");
    scanf("%d",&n);
    for(i=0;i<cnt;i++){
        if((s[i]-'A'>=0 && s[i]-'Z'<=0) || (s[i]-'a'>=0 && s[i]-'z'<=0)){
            if(s[i]-'A'>=0 && s[i]-'Z'<=0){
                s[i] = (s[i]-'A'+n)%26 + 'A';
            }
            else{
                s[i] = (s[i]-'a'+n)%26 + 'a';
            }
        }
    }
    s[cnt] = '\0';
    puts(s);
    return 0;
}