要求转换成密码的形式

有一组由数字及英文字母组成的字符,现要求转换成密码传递,规则如下:首先将每个字符转换成其后的第二个字符,然后再将整个字符串右移两个位置得到密码,最后输出密码。其中,数字字符仍转换成数字字符,’0’转换成’2’,‘1’转换成’3’……’8’转换成’0’,’9’转换成’1’;大字字母仍转换成大写字母,’A’转换成’C’,’B’ 转换成’D’……’Y’转换成 ‘A’,’Z’转换成‘B’;小字字母仍转换成小写字母,跟大字字母转换规则相同。例如,字符串为”AD129xy”,转换成密码是”zaCF341”。请完善程序。


#include <stdio.h>
#include <string.h>
int main(void) { 
    char s[1000];
    scanf("%s", &s);
    int n = strlen(s);
    for(int i = n + 1;i >= 2;i--){
        if(s[i-2]>='0'&&s[i-2]<='9'){
            s[i] = '0' + (s[i-2]-'0'+2)%10;
        }
        else if(s[i-2]>='A'&&s[i-2]<='Z'){
            s[i] = 'A' + (s[i-2]-'A'+2)%26;
        }
        else  if(s[i-2]>='a'&&s[i-2]<='z'){
            s[i] = 'a' + (s[i-2]-'a'+2)%26;
        }
    }
    s[1] = s[n+1];
    s[0] = s[n];
    s[n] = '\0';
    printf("%s", s);
    return 0;
}