题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1982
最开始我并没有用映射,直接算出数字加上64,但程序运行时并没有进入for循环,应此也没有结果输出
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
string str;
char s[27] = {'0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
getchar();
while(n--)
{
getline(cin,str);
for(int i=0;i<str.length();i++)
{
if(str[i]=='#')
cout<<" ";
else if(str[i]=='-')
continue;
else
{
int k=0;
if(str[i+1]>='0' && str[i+1]<='9')
{
k=(str[i]-'0')*10+(str[i+1]-'0');// 计算是哪个数字代表哪个字母代表他们之间相差的ASCII码数>
cout<<s[k];
i++; //已经计算了 str[i+1],所以要跳过直接判断
str[i+2];
}
else
{
k=(str[i]-'0');cout<<s[k] ;}
}
}cout<<endl;}return 0;
}