一、知识点
A的ASCII码是65,Z的ASCII码是90
a的ASCII码是97,z的ASCII码是122
从z到a的反循环,用26求余数
二、题目
1、描述
九键手机键盘上的数字与字母的对应: 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 ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
2、数据范围
输入的字符串长度满足 1<=n<=100
3、输入
输入100个密码,长度不超过100个字符
4、输出
输出密码变换后的字符
三、自己写的代码
#include<stdio.h>
int main() {
int i = 0;
char line[101];
scanf("%s", line);
while (line[i] != '\0') {
if (line[i] >= 'a' && line[i] <= 'z') {
if (line[i] == 'a' || line[i] == 'b' || line[i] == 'c') {
line[i] = '2';
} else if (line[i] == 'd' || line[i] == 'e' || line[i] == 'f') {
line[i] = '3';
} else if (line[i] == 'g' || line[i] == 'h' || line[i] == 'i') {
line[i] = '4';
} else if (line[i] == 'j' || line[i] == 'k' || line[i] == 'l') {
line[i] = '5';
} else if (line[i] == 'm' || line[i] == 'n' || line[i] == 'o') {
line[i] = '6';
} else if (line[i] == 'p' || line[i] == 'q' || line[i] == 'r' ||
line[i] == 's') {
line[i] = '7';
} else if (line[i] == 't' || line[i] == 'u' || line[i] == 'v') {
line[i] = '8';
} else if (line[i] == 'w' || line[i] == 'x' || line[i] == 'y' ||
line[i] == 'z') {
line[i] = '9';
}
} else if (line[i] >= 'A' && line[i] <= 'Z') {
line[i] = 'a' + (line[i] + 32 - 'a' + 1) % 26;
} else {
}
i++;
}
printf("%s\n", line);
return 0;
}