鹿见青山 2023-12-15 22:59 采纳率: 97.9%
浏览 24
已结题

pta九宫格输入法怎么理解这个代码


#include <stdio.h>
int main()
{
int i,j,len1,len2,t,k=0;
    char a[10][6]={"0 ","1,.?!","2ABC","3DEF","4GHI","5JKL","6MNO","7PQRS","8TUV","9WXYZ","0 "};
  char b[1000];
    gets(b);
    len2=strlen(b);
    for(i=0;i<len2;i++)
    {
        t=b[i]-'0';
        len1=strlen(a[t]);
        while(b[i]!=' '&&b[i]!='\0')
        {
            i++;
            k++;
        }
        j=k%len1==0?len1-1:k%len1-1;
        printf("%c",a[t][j]);
        k=0;
    }
    printf("\n");
    return 0;
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2023-12-15 23:53
    关注
    gets(b);
    这里读取输入的内容
    然后for(i=0;i<len2;i++) 这是遍历每一个输入的数字放入 b[i]
    t=b[i]-'0';这里t是那个数字对应的数字下标
    然后在char a[10][6]={"0 ","1,.?!","2ABC","3DEF","4GHI","5JKL","6MNO","7PQRS","8TUV","9WXYZ","0 "};里面查找
    如果是0,那么就是0,如果是3,就说明是2ABC,以此类推
    while(b[i]!=' '&&b[i]!='\0')
    这里是看按了几次,直到结尾或者空格,从而区分出按下的是哪一个,比如说前面按下了2,进入2ABC这个键,这里按下2次,说明是A这个字母
    printf("%c",a[t][j]);
    输出这个字符
    所以这个程序就是根据一串对手机键盘的按键,得到要输入的那句话。
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 创建了问题 12月15日

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆