7-33 九宮格輸入法(15 分)

假設有九宮格輸入法鍵盤佈局如下:

 [ 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++;
		
	}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章