假設有九宮格輸入法鍵盤佈局如下:
[ 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
#include<stdio.h>
char result(int a,char s){
int array[10][5]=
{
{49,44,46,63,33},//1
{50,65,66,67},//2
{51,68,69,70},//3
{52,71,72,73},//4
{53,74,75,76},//5
{54,77,78,79},//6
{55,80,81,82,83},//7
{56,84,85,86},//8
{57,87,88,89,90},//9
{48,32}//0
};
if(s=='1'||s=='7'||s=='9'){
while(a>5) a-=5;
printf("%c",array[s-'0'-1][a-1]);
}else if(s=='0'){
while(a>2) a-=2;
printf("%c",array[9][a-1]);
}else{
while(a>4) a-=4;
printf("%c",array[s-'0'-1][a-1]);
}
}
int main(void){
char c[500];
int i,j;
//輸入字符串
for(i=0;;i++){
scanf("%c",&c[i]);
if(c[i]=='\n') break;
}
//計算並輸出
for(i=0;c[i]!='\n';i++){
int show=1;
for(;c[i]==c[i+1];i++){
show++;
}
result(show,c[i]);
if(c[i+1]==' ') i++;
}
}