study in pta(基础语法)(2025.10.19)

7-26 九宫格输入法 - 课外练习3(25计3、4班)

这题我是想用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;
}

可学习很多东西

比如代码的逻辑和其中的语法(不会的直接问豆包)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值