64,649
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<string.h>
#define N 5
#define M 1010
using namespace std;
int main()
{
//定义变量
char num[10][N];
char c[M];
char alp[M],a[M],b[M];
int i,j,k,l,n,m,t;
//数组初始化
memset(c,0,sizeof(c));
memset(alp,0,sizeof(alp));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(num,0,sizeof(num));
//打表(不知道是不是打表O(∩_∩)O~)
num[2][1] = 'A', num[2][2] = 'B', num[2][3] = 'C';
num[3][1] = 'D', num[3][2] = 'E', num[3][3] = 'F';
num[4][1] = 'G', num[4][2] = 'H', num[4][3] = 'I';
num[5][1] = 'J', num[5][2] = 'K', num[5][3] = 'L';
num[6][1] = 'M', num[6][2] = 'N', num[6][3] = 'O';
num[7][1] = 'P', num[7][2] = 'Q', num[7][3] = 'R', num[7][4] = 'S';
num[8][1] = 'T', num[8][2] = 'U', num[8][3] = 'V';
num[9][1] = 'W', num[9][2] = 'X', num[9][3] = 'Y', num[9][4] = 'Z';
//输入数字字符串
while(scanf("%s", &c) != EOF){
l = strlen(c);
//再次初始化
memset(alp,0,sizeof(alp));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
//转换成标准手机键盘大写字母
for(i = 0; i < l+1 ; i+=2){
alp[i/2] = num[c[i] - '0'][c[i+1] - '0'];
}
//转换成对应的PC键盘字母
j = k = 0;
for(i = 0; i < l/2; i++){
switch(alp[i]){
case 'Q' : alp[i] = 'A'; break;
case 'W' : alp[i] = 'B'; break;
case 'E' : alp[i] = 'C'; break;
case 'R' : alp[i] = 'D'; break;
case 'T' : alp[i] = 'E'; break;
case 'Y' : alp[i] = 'F'; break;
case 'U' : alp[i] = 'G'; break;
case 'I' : alp[i] = 'H'; break;
case 'O' : alp[i] = 'I'; break;
case 'P' : alp[i] = 'J'; break;
case 'A' : alp[i] = 'K'; break;
case 'S' : alp[i] = 'L'; break;
case 'D' : alp[i] = 'M'; break;
case 'F' : alp[i] = 'N'; break;
case 'G' : alp[i] = 'O'; break;
case 'H' : alp[i] = 'P'; break;
case 'J' : alp[i] = 'Q'; break;
case 'K' : alp[i] = 'R'; break;
case 'L' : alp[i] = 'S'; break;
case 'Z' : alp[i] = 'T'; break;
case 'X' : alp[i] = 'U'; break;
case 'C' : alp[i] = 'V'; break;
case 'V' : alp[i] = 'W'; break;
case 'B' : alp[i] = 'X'; break;
case 'N' : alp[i] = 'Y'; break;
case 'M' : alp[i] = 'Z'; break;
default : break;
}
}
//将字符串截成前后两段
j = 0;
l = strlen(alp);
if(l % 2 != 0)
t = l / 2 + 1;
else
t = l / 2;
for(i = 0; i < t; i++){
a[j] = alp[i];
j++;
}
k = 0;
for(i = t; i < l; i++){
b[k] = alp[i];
k++;
}
j = k = 0;
//组合字符串
memset(alp,0,sizeof(alp));
for(i = 0; i < l; i+=2){
alp[i] = a[j];
alp[i + 1] = b[k];
j++;
k++;
}
l = strlen(alp) - 1;
//逆序输出字符串
for(i = l; i >= 0; i--){
printf("%c",alp[i]);
}
printf("\n");
}
//system("pause");
return 0;
}