九宫格输入法

假设有九宫格输入法键盘布局如下:

 [ 1,.?! ] [ 2ABC ] [ 3DEF  ]
 [ 4GHI  ] [ 5JKL ] [ 6MNO  ]
 [ 7PQRS ] [ 8TUV ] [ 9WXYZ ]
           [ 0空  ]

注意:中括号[ ]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字符。多次按同一个键,则输入的字符依次循环轮流,例如按两次3,则输入D;按5次7,则输入S;按6次2,则输入A。按键0的输入组合是0空格字符,即按两次0输入空格。

你需要对于给定的按键组合,给出该组合对应的文本。

输入格式:

输入在一行中给出数个字符的按键组合(例如 999 表示按3次9),每个字符的按键组合之间用空格间隔,最后一个输入法组合之后以换行结束。输入数据至少包括一个字符的按键组合,且输入总长度不超过500个字符。

输出格式:

在一行中输出该按键组合对应的文本。

输入样例:

22 5555 22 666 00 88 888 7777 4444 666 44

输出样例:

ALAN TURING

 为什么答案错误?

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "string.h"
int main()
{
	char a[10][5]={{'1','.','?','!' }, {'2','A','B','C'}, {'3','D','E','F'} ,{'4','G','H','I'}, {'5','J','K','L'},{'6','M','N','O'},{'7','P','Q','R','S'},{'8','T','U','V'} ,{'9','W','X','Y','Z'} ,{'0',' '}  };
    int i=0,j,t;
    int b[10],len;
    for(i=0;i<10;i++)
        b[i]=-1;
	char c[10001];
	gets(c);
    len=strlen(c);
    c[len]=' ';
    len++;
    c[len]='\0';
    //puts(c);
    i=0;
	while(1)
	{
        
		if(c[i]!=' ')
		{
		b[c[i]-'0']++;
		}
        else 
        { 
            t = c[i-1]-'0';
            //printf("%d ",t);
            if(t!=0)
            {
           printf("%c",a[t-1][b[t]]);
            }
            else
            {
               printf("%c",a[9][b[t]]);
            }
             b[t]=-1;
        }
        i++;
        if(c[i]=='\n')
          break;
	}
	
 return 0;   
}

题目我忽略了轮流

/* Note:Your choice is C IDE */
#include<stdio.h>
#include<string.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"};
    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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值