这题我是想用switch case写的但先看了豆包代码如下
#include <stdio.h>
#include <string.h>
int main() {
// 修正键盘映射:每个数字对应的字符序列(按1次、2次...的顺序)
const char* keyboard[] = {
"0 ", // 0键:按1次是'0',按2次是空格(原代码顺序颠倒)
"1,.?!", // 1键:按1次'1',2次'.',3次'?',4次'!'
"2ABC", // 2键:1次'2',2次'A',3次'B',4次'C'
"3DEF", // 3键:1次'3',2次'D',3次'E',4次'F'
"4GHI", // 4键:1次'4',2次'G',3次'H',4次'I'
"5JKL", // 5键:1次'5',2次'J',3次'K',4次'L'
"6MNO", // 6键:1次'6',2次'M',3次'N',4次'O'
"7PQRS", // 7键:1次'7',2次'P',3次'Q',4次'R',5次'S'
"8TUV", // 8键:1次'8',2次'T',3次'U',4次'V'
"9WXYZ" // 9键:1次'9',2次'W',3次'X',4次'Y',5次'Z'
};
char input[501];
fgets(input, sizeof(input), stdin);
char* token = strtok(input, " \n");
while (token != NULL) {
int len = strlen(token);
int num = token[0] - '0'; // 提取数字(如"22"提取出2)
const char* chars = keyboard[num];
int chars_len = strlen(chars);
// 计算索引:按len次对应的字符(第0位是按1次的结果)
int index = (len - 1) % chars_len;
putchar(chars[index]);
token = strtok(NULL, " \n");
}
putchar('\n');
return 0;
}
可学习很多东西
比如代码的逻辑和其中的语法(不会的直接问豆包)


被折叠的 条评论
为什么被折叠?



