现在有一种密码变换算法。九键手机键盘上的数字与字母的对应:1–1,abc–2, def–3,ghi–4,jkl–5,mno–6,pqrs–7,tuv–8 wxyz–9,0–0
把密码中出现的小写字母都变成九键键盘对应的数字,如:a变成2,x变成9;密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写x,再往后移一位,变成了y,例外Z往后移是a;数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足1≤n≤100
输入描述:输入一组密码,长度不超过100个字符
输出描述:输出密码变换后的字符串
输入:YUANzhi1987
输出:zvbo9441987
#include <stdio.h>
#define SIZE 100
int a[26] = {
2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9
};
int main() {
char plain[SIZE];
while(scanf("%s", plain) != EOF)
{
int len = strlen(plain);
for(int i = 0; i < len; i++) {
if(plain[i] >= 'A' && plain[i] <= 'Z') {
plain[i] = ((plain[i] - 'A' + 1) % 26) + 'a';
} else if(plain[i] >= 'a' && plain[i] <= 'z') {
plain[i] = a[plain[i] - 'a'] + '0';
} else {
//plain[i] = plain[i];
}
}
printf("%s\n", cipher);
}
return 0;
}