解题思路:
首先判断 是否是大写字母,并作相应的转换,其次 将小写字母转换成对应的数字,最后保持数字不做转换。
收获:判断是否为小写字母:islower
判断是否为大写字母:isupper
大写转换小写 tolower
小写转换大写 toupper
#include <stdio.h>
#include <ctype.h>#include <string.h>
void judge_word(char word) {
if(isupper(word)) {
if (tolower(word) == 'z') printf("a");
else printf("%c", tolower(word)+1 );
} else if (islower(word)) {
if (('a' <= word) && (word <= 'c')) {
printf("2");
} else if (('d' <= word) && (word <= 'f')) {
printf("3");
} else if (('g' <= word) && (word <= 'i')) {
printf("4");
} else if (('j' <= word) && (word <= 'l')) {
printf("5");
} else if (('m' <= word) && (word <= 'o')) {
printf("6");
} else if (('p' <= word) && (word <= 's')) {
printf("7");
} else if (('t' <= word) && (word <= 'v')) {
printf("8");
} else if (('w' <= word) && (word <= 'z')) {
printf("9");
}
} else {
printf("%c", word);
}
}
int main(void) {
char str[100] = {0};
while (scanf("%s", str) != EOF) { // scanf 输入时不处理 最后的结束符号
int length = strlen(str);
for(int i = 0; i < length; i++) {
judge_word(str[i]);
}
printf("\n");
}
return 0;
}