个人当时的第一思路是找 函数打表,用SWITCH实现。结果在倒序的时候抽风了:
for(int j=0;j<clength;j++,clength--)
{
temp=ch1[clength];
ch1[clength]=ch1[j];
ch1[j]=temp;
}
(这不是自寻死路吗,数组显然OT了)
居然debug了半个小时,悲剧啊悲剧(直接用自带的反转函数就可以了) 其实用数组更简单
a[]="70aen^pw5!u"
b[]="loeauvdmsi"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
char reserven(char ch)
{
switch(ch)
{
case '7':return 'l';break;
case 'o':return 'o';break;
case 'a':return 'e';break;
case 'e':return 'a';break;
case 'n':return 'u';break;
case '^': return 'v';break;
case 'p': return 'd';break;
case 'w': return 'm';break;
case '5': return 's';break;
case '!': return 'i';break;
case 'u': return 'n';break;
default:return ' ';break;
}
}
int main()
{
int inputnum;
cin>>inputnum;
getchar();
for(int i=1;i<=inputnum;i++)
{
string ch1,ch2;
getline(cin,ch1,'\n');
int clength=ch1.length();
ch2.assign(ch1.rbegin(), ch1.rend());
for(int k=0;k<clength;k++)
{
ch2[k]=reserven(ch2[k]);
}
cout<<"Case "<<i<<": "<<ch2<<endl;
}
return 0;
}