有一组由数字及英文字母组成的字符,现要求转换成密码传递,规则如下:首先将每个字符转换成其后的第二个字符,然后再将整个字符串右移两个位置得到密码,最后输出密码。其中,数字字符仍转换成数字字符,’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;
}